Я изменил пример Производитель / Потребитель http://msdn.microsoft.com/en-us/library/yy12yx1f(v=vs.80).aspx. Я не хочу, чтобы Consumer
обрабатывал queue
"по событию". Вместо этого я использую бесконечный цикл (такой же, как в Producer) и пытаюсь обработать все элементы как можно скорее. Есть ли проблемы с таким подходом? Зачем нам нужны «события» между Потребителем и Производителем, если мы можем использовать бесконечный цикл?
// Consumer.ThreadRun
public void ThreadRun()
{
int count = 0;
while (!_syncEvents.ExitThreadEvent.WaitOne(0, false))
{
lock (((ICollection)_queue).SyncRoot)
{
while (_queue.Count > 0)
{
int item = _queue.Dequeue();
count++;
}
}
}
Console.WriteLine("Consumer Thread: consumed {0} items", count);
}