Você pode usar o sinalizador /affinity usando o comando start para especificar os núcleos que um processo deve usar.
Uso
start /affinity n foo.exe -arguments
Então, o seu atalho ficaria assim:
c:\windows\system32\cmd.exe /C start /affinity n foo.exe -arguments em que n é
Número do núcleo da CPU +1.
Então, para rodar no Core 0, seria:
c:\windows\system32\cmd.exe /C start /affinity 1 foo.exe -arguments .
Especificando vários núcleos
Suponha que uma CPU tenha 4 núcleos. Para especificar os núcleos a serem usados:
-
Visualize os núcleos como uma matriz com o comprimento da matriz igual ao número de núcleos. Os núcleos serão organizados em ordem decrescente da direita para a esquerda:
[CPU3, CPU2, CPU1, CPU0] -
Agora, substitua os núcleos que você gostaria que seu processo usasse com 1 e os que você não usaria com 0. Supondo que eu queira que meu processo use core 3 & 1, minha matriz gostaria disso:
[0,1,0,1] -
"Pop" os elementos da matriz para uma string. Agora seria representado como
0101. -
Suponha que a string esteja em binário e a converta em hexadecimal. Agora seria
0x5 -
Agora use o mesmo comando
start /affinity n foo.exe -arguments, mas agoranserá0x5, dandostart /affinity 0x5 foo.exe -arguments
- A fonte explica a visualização como uma string binária, não uma matriz (confira). Acho isso um pouco confuso, então expliquei usando uma matriz.
- A origem não especifica que você deve prefixar
0xpara mostrar que é hexadecimal no comando. A leitura destart /?especifica que deve ser hexadecimal.