[zeromq-dev] connect from a different thread
Martin Sustrik
sustrik at 250bpm.com
Sun Jan 2 12:42:01 CET 2011
Hi Gaspard,
> I have a zmq.SUB socket handling remote messages in thread A. It spends
> most of its time in recv().
>
> Some other thread B running mDNS finds services and I want it to connect
> the subscriber (created in thread A) to the remote end.
>
> Is it ok to connect from a different thread ?
No. You cannot access one socket from multiple threads. In 2.1 you can
migrate a socket to another thread, however, you still can't access it
from multiple threads in parallel.
>
> Is it ok to connect while the socket is in recv() ?
No. As explained above, a socket is not thread-safe.
> If not, one solution I see would be to connect the subscriber to an ipc
> socket (created in the mDNS loop) to receive connection info. Is this
> the way to handle such a pattern ?
Yes. You can create another socket to pass connection info's to the
subscriber thread. The subscriber thread then has to wait using
zmq_poll, polling on both sockets, instead of simply calling recv.
HTH
Martin
More information about the zeromq-dev
mailing list