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