[zeromq-dev] How many OS threads does ZeroMQ use internally?

Jan Drabner jan at jdrabner.eu
Thu Jan 9 14:33:10 CET 2014

Hey there,

We are currently doing research for our project to figure out the best 
way to do inter-thread communication with a message queue. As we are 
using zmq for networking purposes already, it was logical to also 
research it for the above purpose.

Now, we will have a number of threads (say 5-10) communicating with each 
other to send commands, synchronize data, etc.
Each of the threads will have to communicate with a certain number of 
other threads. I figured that for this setup, making each thread a 
publisher as well as a subscriber to the other threads it wants to 
listen to would be the best bet.
However, I do not know how many internal zmq threads that would yield.

Imagine this socket situation for thread A (all threads use the same 
context, only inproc is used):
Socket for publishing
Socket for subscribing to thread B
Socket for subscribing to thread F
Socket for subscribing to thread J

How many internal zmq OS threads would be spawned for this?

If it is just one (per context), it would be fine. If it is one 
additional internal thread per our thread (or per publishing socket), it 
would probably be acceptable. If it was per socket (any kind of socket), 
however, that would be really bad as it would mean we had roughly +5 
threads per our own thread. Even if those thread do not do much, they 
would still take away too many pieces of the cake.

Hope someone can answer that question :)

More information about the zeromq-dev mailing list