Você não pode garantir no .net que dois Thread
s sejam executados em dois núcleos separados. De fato, você também não pode garantir que um Thread
seja executado em apenas um núcleo (!) .
Isso ocorre porque os threads gerenciados não são iguais aos threads do SO - um único Thread gerenciado pode usar vários threads do SO para suportá-lo. Em C #, você só lida diretamente diretamente com Thread
s gerenciados (pelo menos, sem recorrer a p / invoke para chamar as funções de threading do WinAPI, o que você nunca deve fazer) .
No entanto, os agendadores de threads .Net e 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 inativo. Portanto, em geral, você não precisa se preocupar com isso.
t1
et2
for executado em momentos diferentes em uma ordem arbitrária (por exemplo, é possívelt2
iniciar antest1
em alguns modelos).