Я реализую пул потоков. Работа, требуемая для каждого потока, составляет 1-10 секунд процессора, поэтому я рад иметь традиционный пул потоков с рабочими, или я рад создать новый поток для каждой единицы работы. Это не имеет значения.
Мне бы хотелось, чтобы главный управляющий поток знал, когда один из N рабочих потоков завершает свою работу и готов к большему (или пора начинать другой). Я посмотрел на pthread_join и pthread_cond_wait. Кажется, не существует способа ожидания одного из N. Поэтому я подумал о том, чтобы в главном потоке была переменная, которую он использует для сна, и чтобы рабочие разбудили его. Это похоже на работу, если рабочие не умирают. Однако, если они умирают, между временем, в которое рабочий разбудил контроллер, и временем, когда он умирает, есть окно, с которым я не хочу иметь дело.
Я смотрел на TBB от Intel, но он выглядит намного сложнее, чем мне нужно.
Есть ли в PTHREADS простой эквивалент для WaitForMultipleObjects в Microsoft Windows?