thread
Есть некоторая очередь с задачами
Взаимодействие между ними налажено, всё более-менее работает
На текущий момент поток ждёт notify_one, после чего хватает очередь, блокирует её, берёт задачу и разблокирует для дальшейших потоков, которые так же в состоянии ожидания
Стоит задача: Нужно модернизировать систему так, чтобы число потоков было ограниченным (допустим, сделаю 4 потока, по ядру на каждый) и сделать балансировку задач, которые лежат в очереди, между потоками
Мысли:
Разделить количество задач между потоками (допустим, есть 12 задач, на каждый поток будет отводится по 3, соответственно).
Для этого нужно либо завести на каждый поток свою очередь, куда закинуть задачи только для данного потока, либо как-то ещё. Отчего-то эта идея кажется плохой, но в голову другой не идёт.
Помогите, пожалуйста, как это лучше спланировать.
Вопрос:
Как лучше поступить?
https://github.com/cameron314/concurrentqueue
Обсуждают сегодня