[zeromq-dev] thread affinity

Justin Karneges justin at affinix.com
Sat Nov 30 07:30:43 CET 2013


Hi folks,

What's the latest on the thread-safety of sockets? I know that normal 
0MQ practice suggests not using a socket from multiple threads, but I 
wonder if this is nonetheless possible, for example by wrapping a mutex 
around access.

The reason I ask is I'm exploring the possibility of using 0MQ in a 
hybrid event-driven & threaded C++ environment (imagine something like 
Goroutines or .NET tasks). A socket would never be used by two threads 
simultaneously, but the thread on which a socket is utilized could 
change depending on how the eventing system dispatches work. For 
example, a task executing in one thread could go to sleep while it waits 
for a message and then wake up in a different thread when a message 
becomes available.

I just want to confirm that this is a valid usage of 0MQ, before I do 
something that might not be possible or might get broken in a future 
release.

Justin



More information about the zeromq-dev mailing list