Используете ли вы очень старый TBB?
Наличие задач "ждать" - это то, что TBB плохо обрабатывал в прошлом, но текущие новости TBB содержат это:
Класс потоков ISO C ++ - Тонкая переносимая оболочка вокруг потоков ОС.Это точное приближение потока класса ISO C ++ 200x (раздел 30.2 http://www.open -std.org / jtc1 / sc22 / wg21 / docs / paper / 2008 / n2691.pdf ).Теперь TBB позволяет вам выбирать, что лучше для вашей ситуации - на основе задач, а не на основе потоков.Потоки, как правило, лучше, чем задачи, когда «работа» действительно требует больше времени, чем вычисления, например:
* GUI, I/O or network interface threads.
* Threads that need to wait on external events.
* Programs that previously needed to use both native threads and Intel® TBB tasks.
т.е. они допускают, что параллелизм задач TBB не является универсальной панацеей, и вынужно что-то более похожее на «традиционную» модель потоков, иногда для ввода / вывода.И действительно, если вы посмотрите последнее справочное руководство , вы обнаружите, что TBB теперь содержит условные переменные!(См. Раздел 8.4)