J'ai un code multithread que je veux exécuter sur les 4 cœurs de mon processeur. C'est à dire. Je crée quatre threads, et je veux que chacun d'eux tourne sur un noyau séparé.Empêcher Windows de modifier l'affinité de processus
Ce qui se passe, c'est qu'il commence à fonctionner sur quatre cœurs, mais de temps en temps passerait à seulement trois cœurs. Les seules choses qui fonctionnent sont le système d'exploitation et mon exe. C'est un peu décevant, car il diminue la performance d'un quart, ce qui est assez important pour moi.
L'affinité de processus que je vois dans le Gestionnaire des tâches permet au processus d'utiliser n'importe quel cœur. J'ai essayé de restreindre les affinités de fil, mais cela n'a pas aidé. J'ai également essayé d'augmenter la priorité du processus, mais cela n'a pas aidé le cas non plus. Donc, la question est, y a-t-il un moyen de forcer Windows à continuer à fonctionner sur les quatre c? Urs? Si ce n'est pas possible, puis-je réduire la fréquence de ces interruptions? Merci!
Merci pour votre réponse. Cependant, comme je l'ai dit, j'ai essayé de restreindre les affinités de fil, et cela n'a pas fonctionné. Je pense que c'est l'affinité du processus qui change, les affinités de fil respectent toujours l'affinité du processus. –
Est-ce Windows et avez-vous utilisé SetThreadAffinityMask() (vous avez besoin d'un appel de chaque thread) ou avez-vous essayé de le faire avec le gestionnaire de tâches? J'ai utilisé ce programme vidéo Windows plusieurs fois, et je ne l'ai jamais vu ne pas utiliser tous les cœurs lors du rendu, donc il est possible d'empêcher les threads de changer de cœurs. – rcgldr
Oui, c'est Windows et j'ai utilisé SetThreadAffinityMask() et je l'ai appelé une fois pour chacun des threads. –