При использовании iocp в пуле заданий / задач для обеспечения быстрого пробуждения рабочих, каков наилучший способ минимизировать накладные расходы на сигнализацию порта - т. Е. Не делать это при каждой операции очереди?
void Worker()
{
while(1)
{
for(int spin = 0; spin < 5000; ++spin)
while(queue.Count > 0)
queue.PopFront()();</p>
<pre><code> WaitOnCompletionPort();
}
}
...
queue.PushBack (someWork);
// решить, когда сигнализировать порт завершения, но избегать делать это при каждой операции очереди?
Например, в приведенном выше наброске грубого кода существует проблема между работой, находящейся в очереди, и вводом ожидания, если вы попытаетесь избежать сигнализации порта при каждой операции очереди.