質問: new thread(thread2); t1.start(); t2.start(); t1スレッドとt2スレッドは別々のコアで実行することが保証されていますか?
回答: .netでは、2つのthreadsが2つの別々のコアで実行されることを保証できません。実際、1つのthreadが1つのコアでのみ実行されることを保証することもできません(!)。これは 管理対象スレッドはosスレッドと同じではない -単一の管理対象スレッドが複数のosスレッドを使用してそれをサポートする可能性があるためです。 c#では、マネージドthreads (少なくとも、winapiスレッド関数を呼び出すためにp/invokeを使用することなく、決して行うべきではありません)を直接処理するだけです)。ただし、.netとwindowsのスレッドスケジューラは、その機能が非常に優れています。2番目のコアが完全にアイドル状態のときに、1つのコアで2つのスレッドを実行することはありません。したがって、一般的には、心配する必要はありません。