Somewhere I have heard about Thread Affinity and Thread Affinity Executor. But I cannot find a proper reference for it at least in java. Can someone please explain to me what is it all about?
4 に答える
説明してみましょう。マルチコア プロセッサの台頭、スレッド間でのメッセージ パッシング、スレッド プーリング、スケジューリングはよりコストのかかる問題になっています。なぜこれが以前よりもはるかに重くなったのか、そのためには「機械的な共感」の概念を理解する必要があります。詳細については、ブログを参照してください。しかし、大雑把に言えば、スレッドがプロセッサの異なるコアに分散されている場合、スレッドがメッセージを交換しようとする場合です。キャッシュミスの確率が高い。あなたの特定の質問に来て、スレッドアフィニティは特定のスレッドを特定のプロセッサ/コアに割り当てることができます。これに使用できるJavaのライブラリの1つを次に示します。
スレッド アフィニティ (またはプロセス アフィニティ) は、スレッド/プロセスの実行が許可されているプロセッサ コアを表します。通常、この設定はシステムの (論理) CPU と同じであり、これを変更する理由はほとんどありません。オペレーティング システムは、使用可能なプロセッサ間でタスクをスケジュールするための最良の可能性を持っているからです。
これが Windows でどのように機能するかについては、http://msdn.microsoft.com/en-us/library/windows/desktop/ms683213 (v=vs.85).aspx を参照してください。Java がこれらを設定するための API を提供しているかどうかはわかりません。