0

ジョブ/タスク プールで iocp を使用してワーカーのウェイクアップを高速化する場合、ポートのシグナリングのオーバーヘッドを最小限に抑える最善の方法は何ですか?

void Worker() { while(1) { for(int spin = 0; spin < 5000; ++spin) while(queue.Count > 0) queue.PopFront()();

    WaitOnCompletionPort();
}

}

...

queue.PushBack(someWork); // decide when to signal completion port but avoid doing it every queue operation ?

たとえば、上記の大まかなコード スケッチでは、キュー操作のたびにポートに信号を送ることを避けようとすると、キューに入れられている作業と開始されている待機の間に問題があります。

4

1 に答える 1

1

IOCPをキューとして使用し、作業項目を直接キューに投稿してみませんか?そうすれば、スレッドセーフなキューを無料で入手でき、他のキューを完全に削除できますか?

その後、この質問はなくなります;)

于 2010-07-20T07:16:20.040 に答える