Juste pour etre sur de mon coup.
je veux assigner un thread a un CPU particulier.
Donc, j'utilise la fonction SetThreadAffinityMask de l'api crosoft.
Il y a deux paramètres a cette fonction :
-Le handle du thread
-Un bit vector
Alors, si je capte bieng la MSDN ( http://msdn.microsoft.com/library/ [...] stimes.asp )
Citation :
A thread affinity mask is a bit vector in which each bit represents the processors that a thread is allowed to run on.
|
Dans le cas d'un Quadri CPU, si je veux que le thread1 tourne sur le premier CPU, je lui file comme mask le nombre 1.
Si je veux que le thread2 tourne sur le CPU2 et uniquement le 2, je lui file 2.
Pour que le thread 3 soit sur le CPU3, je dois lui donner 4 ( 100 en binaire)
Et pour que le thread soit sur le CPU4, je dois lui filer 8 ( 1000 en binaire).
Donc, si je veux assigner X threads a X CPUs différents, je dois leur filer des puissances de 2 différentes.
j'ai bon ?