2016-09-16 1 views
0

Je souhaite dédier certains cœurs de processeur à mon application de streaming de données en temps réel, car je veux m'assurer que ce processus est toujours exécuté sans changement de contexte. (Aucune application excepté mon processus s'exécutant sur ce noyau)Y a-t-il un moyen de dédier des cœurs de processeurs exclusivement pour un processus dans Windows 10?

Il semble qu'il existe une solution de travail pour Linux. Est-il possible de faire cela pour Windows 10?

Toute solution sera grandement appréciée. Mais pour dédier des cœurs de processeur (par exemple seulement le core 1) exclusivement pour mon processus, je dois décocher le core 1 dans la fenêtre d'affinité de processus pour tous les processus, et seulement vérifier le noyau 1. Cependant, cette solution est un travail physique trop fastidieux et semble difficile à effectuer par programme.)

+0

Non, Windows ne fournit aucun moyen de le faire. Ce que vous * pouvez * faire augmente la priorité de votre thread. Cependant, il y aura toujours du temps perdu, à cause des interruptions matérielles si ce n'est rien d'autre. Windows n'est pas un système d'exploitation en temps réel. –

+0

Avez-vous rencontré des problèmes en faisant fonctionner le planificateur de tâches comme prévu, ou envisagez-vous une optimisation prématurée? – IInspectable

+0

@HarryJohnston Merci pour votre commentaire. Je vois. – asqdf

Répondre

-1

Vous pouvez utiliser l'API WIN32 SetProcessAffinityMask() pour définir l'affinité de processus.

+0

Ces contrôles, sur lesquels un thread de processus s'exécute. Il ne marque pas ce noyau pour une utilisation exclusive par un seul processus, comme la question l'a demandé. – IInspectable

+0

@IInspectable Vous pouvez utiliser SetProcessAffinityMask() pour faire ce que l'OP décrit dans son dernier commentaire. C'est à dire. À l'aide EnumerateProcesses() et appelez SetProcessAffinityMask() pour chaque processus dans le système. Pas élégant et nécessite probablement des privilèges d'administrateur. Cependant, il ferait exactement ce que le PO a qualifié de "difficile à faire par programme". – richb

+0

Qu'en est-il des processus créés après l'exécution de votre code? Qu'en est-il de la course TOCTTOU? Qu'en est-il des services système ou du code du pilote? Désolé, ce n'est même pas une possibilité théorique. – IInspectable