4

スレッドが実行されているプロセッサをC#で見つけるにはどうすればよいですか?

4

3 に答える 3

4

これは必ずしも一定ではありません。スレッドは、その存続期間にわたってさまざまなコアにスケジュールされる可能性があります。必要に応じて、特定のスレッドを特定のCPUに結び付けるようにアフィニティマスクを設定できます。.Net内で実行できることの詳細については、Thread.BeginThreadAffinityのAPIドキュメントを参照してください。

于 2010-02-26T10:01:27.220 に答える
1

私見では、.NETスレッドがどのネイティブスレッドにもバインドされていない可能性があります。> NETランタイムは、.NETスレッドを異なるネイティブスレッドとプロセッサ間でいつでも移動できます。

于 2010-02-26T10:00:35.957 に答える
1

できるかわかりません。プロセスアフィニティマスクを取得し(GetProcessAffinityMask)、同じものを設定できます(SetProcessAffinityMask)。スレッドアフィニティマスクを設定することもできますが、そうすることで、アフィニティマスクを設定したプロセッサの1つで実行されるようにスレッドを制限することを理解しています。

特定のコアで実行されている特定のスレッドを詳しく調べている場合は、プロセスアフィニティマスクを設定して、コードを実行できるコアのセットを定義すると、プロセス内のスレッドが選択したコア間でフロートします。

于 2010-02-26T10:03:59.297 に答える