C / C ++ реализация многопоточной модели босс / работники - PullRequest
0 голосов
/ 10 февраля 2011

Я ищу реализацию C / C ++ многопоточного диспетчера заданий. Поток Boss (основная функция) читает задание (например, выполняет msgrcv в цикле while (1)).

Босс читает новую работу и в зависимости от пункта назначения отправляет работу на соответствующая тема. Рабочий поток выполняет задание.

У меня нет времени, чтобы построить его с нуля, я ищу готовое решение.

ОБНОВЛЕНИЕ: я не могу использовать повышение. Должно быть в pthreads (Linux)

Ответы [ 2 ]

3 голосов
/ 10 февраля 2011

Самый простой вариант - заставить рабочие потоки ожидать переменную условия, которая сигнализируется при входе в задание для их чтения.

Вам понадобится мьютекс, который блокируется, пока вы проверяете условие.Когда вы ожидаете переменную условия, она автоматически разблокирует соответствующий мьютекс, пока условие не будет сигнализировано, и в этот момент ваш поток получит его.Вы должны проверить свое состояние еще раз.

У вас может быть одна переменная условия для каждой очереди или одна для всех потоков, это зависит от того, как вы масштабируете.

1 голос
/ 10 февраля 2011

Звучит так, будто вы после пула потоков.Можно найти здесь (для этого требуется повышение ).Я уверен, что поиск в Google для «пула потоков» или чего-то подобного даст другие возможности.

...