1 台のマシンに 2 つのプロセッサがあるとします。スレッド A は P1 で実行され、スレッド B は P2 で実行されています。
スレッド A 呼び出しSleep(10000);
スレッド A が再び実行を開始すると、P2 で実行される可能性はありますか?
はいの場合、この移行を決定するのは誰ですか? いいえの場合、なぜですか?
プロセッサは、実行中のすべてのスレッドまたは OS が各スレッドをプロセッサにバインドするデータを保存しますか?
1 台のマシンに 2 つのプロセッサがあるとします。スレッド A は P1 で実行され、スレッド B は P2 で実行されています。
スレッド A 呼び出しSleep(10000);
スレッド A が再び実行を開始すると、P2 で実行される可能性はありますか?
はいの場合、この移行を決定するのは誰ですか? いいえの場合、なぜですか?
プロセッサは、実行中のすべてのスレッドまたは OS が各スレッドをプロセッサにバインドするデータを保存しますか?
可能です。これは、オペレーティング システムのプロセス スケジューラによって決定され、実行中のアプリケーションにも依存する場合があります。キャッシュにあるものを除いて、以前に実行されたスレッドに関する情報はプロセッサによって保持されません。
これは多くのことに依存しており、特定のオペレーティング システムによって動作が異なります。参照:プロセッサ アフィニティとスケジューリング アルゴリズム. Windows では、タスク マネージャーを介して特定のプロセスをプロセッサ コアに固定できます。
はい、可能です。最終的にスレッドはプロセス (実行可能ファイル) から CPU (または CPU コア) を継承しますが、オペレーティング システムでは、プロセスが現在のクォンタム (タイム スライス) で実行される CPU または CPU コアは、スケジューラによって決定されます。
http://en.wikipedia.org/wiki/Scheduling_(コンピューティング)
-オイシン
OS はスレッドを実行するプロセッサを決定し、特に (スリープが原因で) コンテキスト スイッチが発生した場合、そのスレッドの有効期間中に簡単に変更される可能性があります。システムがロードされている場合、両方のスレッドが同じプロセッサ (またはコア) で異なる時間に実行される可能性は十分にあります。または、システムに負荷がかかっていない場合は、両方のスレッドが別々のプロセッサで引き続き実行される可能性があります。