Как уже говорилось в заголовке, у меня есть большое количество потоков (вероятно, намного больше, чем 100), которые скорее сохраняют состояние программы, чем работают.Я хочу, чтобы только несколько из них (достаточно для использования всех физических процессоров) действительно работали одновременно, а остальные должны ждать, пока один из запущенных процессоров не будет заблокирован.Когда это происходит, должен быть запущен новый.
Можно ли добиться этого с помощью pthreads, например, с помощью функций планирования pthread?Как бы вы это сделали?
С уважением,
Никто
РЕДАКТИРОВАТЬ Дополнительная информация: Каждый поток самостоятельно выбирает работу из пула задач и отправляетсяна определенный момент.Мне нужно 100 потоков, чтобы собрать в определенную точку выполнения программы, которая не может быть рассчитана параллельно.Когда вычисления завершены, потоки должны быть разбужены и продолжаться.Чтобы сделать это эффективным, я должен избежать того, чтобы планировщик тратил время на переключение между 100 потоками вместо 4.