Você não pode garantir em .Net que dois Thread
s sejam executados em dois núcleos separados. Na verdade, você também não pode garantir que um Thread
será executado em apenas um núcleo (!) .
Isso ocorre porque os threads gerenciados não são os mesmos que os threads do SO - um único segmento gerenciado pode usar vários segmentos do SO para suportá-lo. Em C #, você só lida diretamente com Thread
s gerenciado (pelo menos, sem recorrer a p / invoke para chamar as funções de encadeamento WinAPI, o que você nunca deve fazer) .
No entanto, os agendadores de threads do .Net e do Windows são muito bons no que fazem - eles não executariam dois threads em um único núcleo, enquanto um segundo núcleo fica completamente ocioso. Então, em geral, você não precisa se preocupar com isso.