Я изучал различные алгоритмы планирования для пула потоков, которые я реализую. Из-за характера проблемы, которую я решаю, я могу предположить, что задачи, выполняемые параллельно, независимы и не порождают никаких новых задач. Задачи могут быть разных размеров.
Я сразу же выбрал самый популярный алгоритм планирования "кражи работы", используя запросы без блокировок для локальных очередей заданий, и я относительно доволен этим подходом. Однако мне интересно, есть ли какие-либо распространенные случаи, когда кража труда не лучший подход.
Для этой конкретной задачи у меня есть хорошая оценка размера каждой отдельной задачи. Кража работ не использует эту информацию, и мне интересно, есть ли какой-либо планировщик, который даст лучшую балансировку нагрузки, чем кража работы с этой информацией (очевидно, с той же эффективностью).
NB. Этот вопрос связан с предыдущим вопросом .