スピン待機するレイテンシクリティカルなコードがあります。専用コアで実行したい(合計で12コアあるので、そのタスクのためだけに1コアを使用してもかまいません)。私はそれをこのように達成しようとしました:
new Thread(Work).Start();
private void Work()
{
Process Proc = Process.GetCurrentProcess();
ProcessThread Thread = Proc.Threads[0];
var AffinityMask = 0x0002; // use only the second processor, despite availability
Thread.ProcessorAffinity = (IntPtr)AffinityMask;
while (true)
{
Iterate();
}
}
ProcessorAffinityを設定した後、私のスレッドは常に2番目のコアで機能するので、2番目のコアでも100%になると期待していました。ただし、タスクマネージャーでは、「100」個の占有コアは表示されません。なんで?専用コアでスピンウェイトスレッドを起動するにはどうすればよいですか?
upd今私はおそらくこれが間違っていると思いますProc.Threads[0]
か?current
スレッドではなくスレッドが必要0
ですか?