2010-10-04 3 views
1

Я хочу реализовать образец производителя - Потребители, используя ThreadPool для потребителей. У меня будет 1 производитель запросов и несколько потребителей, которые будут обрабатывать входящие запросы. Когда Реализация потребителей, использующих threadpool, мой вопрос, если у меня все еще будет своя очередь для продюсера, чтобы отправлять запросы, а затем передавать их в Cosumers ThreadPool, или если мне просто нужно, чтобы Продюсер передал его прямо в очередь ThreadPool?ThreadPool and Producer - вопрос дизайна потребительского шаблона

Моя забота о последнем состоит в том, сколько задач можно передать в очередь ThreadPool и с какой скоростью? Продюсер должен быть довольно быстрым, выполняя некоторую «предварительную обработку», прежде чем передавать его на потребительские потоки.

Будет ли у меня больше контроля, если у меня есть очередь между Продюсером - Потребительский поток?

Это для серверного приложения, которое должно быть высокой производительности и должно будет обрабатывать множество входящих клиентских запросов. (В сотни раз за раз).

Любые советы приветствуются!

ответ

1

Очередь между производителем и threadpool требует 1 или 2 дополнительных переключателей контекста: threadpool ждет в пустой очереди, а затем необходимо отправить в поток потребителей. В конце потребитель должен быть представлен обратно в threadpool. Отправлять и обрабатывать конец можно управление классом сообщения.
Со всеми потребительскими потоками, ожидающими очереди, один из слушателей будет потреблять и прекращать прослушивание до готовности. Когда все потребители заняты, следующее сообщение будет обработано, когда первый потребитель будет готов.
Итак, у первого есть немного более предсказуемое поведение со стоимостью дополнительных контекстных переключений.

Смежные вопросы