2015-11-01 3 views
1

В настоящее время я работаю над проектом, который требует быстрого управления сетью. Для этого я выбрал 0MQ, но после прочтения документации и примера, приведенных этим. Что-то я почти не понимаю относительно асинхронной части 0MQ.ZMQ асинхронный, как он работает точно?

Есть ли какой-либо поток, созданный для каждого запроса в гнезде ROUTER или DEALER?

Я часто ошибаюсь, чтобы объединить асинхронные и многопоточные. Когда я смотрю на человека zmqsocket, я вижу, что для гнезда DEALER или ROUTER входящая маршрутизация устанавливается в «Fair-queued». Из этого я заключаю асинхронные средства, которые вы можете написать или прочитать в сокете, не дожидаясь ответа на отправку другого запроса (все поставлено в очередь и синхронно работает).

Так вот вопрос,

Есть ли нить созданный 0MQ относительно каждого запроса? (Я не говорю о том, что фоновый поток использует 0MQ для управления очередью сообщений).

ответ

3

Zeromq создает только один поток. Никакой дополнительный поток не создается для запроса или сокета.

В фоновом потоке вся работа и пользовательский поток взаимодействуют с фоновыми потоками, используя очереди и дескрипторы файлов.

Фоновая нить использует epoll или kqueue для выполнения асинхронной магии.

Фактически вы можете контролировать количество фоновых потоков, но обычно это одно.

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