Я ищу пул потоков со сбалансированной нагрузкой, но пока безуспешно. (Не уверен, что балансировка нагрузки правильная формулировка). Позвольте мне объяснить, чего я пытаюсь достичь.
Часть 1: У меня есть вакансии, от 8 до 10 отдельных задач. На 6-ядерном процессоре я позволил 8 потокам работать над этими задачами параллельно, что, кажется, обеспечивает лучшую производительность. Когда одна задача готова, можно начинать другую. Как только все десять задач выполнены, вся работа сделана. Обычно работа выполняется за 30-60 секунд.
Часть вторая: Иногда, к сожалению, работа занимает более двух часов. Это верно из-за количества данных, которые необходимо вычислить. Плохо то, что никакое другое задание не может быть запущено во время работы job1 (при условии, что все потоки имеют одинаковую продолжительность), потому что оно использует все потоки.
Моя первая идея: иметь 12 потоков, позволять выполнять до трех задач одновременно. НО: это означает, что при наличии только 1 задания куш не полностью готов.
Я ищу решение, позволяющее использовать полную мощность ЦП для выполнения первой работы, когда другой работы нет. Но когда нужно запустить другое задание, пока выполняется одно другое, я хочу, чтобы мощность ЦП была выделена для обоих заданий. И когда появляется третье или четвертое задание, я хочу, чтобы мощность процессора распределялась справедливо для всех четырех заданий.
Я ценю твои ответы ...
заранее спасибо