RD>>Реализацию бы, конечно, посмотреть.
RD>>Я так понимаю, либо для каждого work item'a ранится отдельный поток (или таска), который пытается захватить семафор перед началом обработки.
A>Да, этот вариант верный.
RD>> в первом случае может получить напрасно простаивающие потоки, если продьюсер генерит данные быстрее, чем их успевают обработать.
A>около 90% случаев данные обрабатываются быстрее, чем их генерят.
Тоже рабочий вариант, но как говориться, есть нюансы
Во-первых, рабочие потоки какое-то время могут простаивать.
Например, если данных для обработки пока что нет — наши 50-100 потоков тупо ждут на мониторе.
А могли бы делать что-то полезное
Во-вторых, если говорить об эффективности, то оверхед на захват монитора — это ~ 250ms. А Interlocked-операция ~10ns.