[zeromq-dev] Sharing socket safely between threads

Thomas Rodgers rodgert at twrodgers.com
Mon May 7 17:49:27 CEST 2018


The zmq docs say you need to ensure a ‘full fence’ a mutex is one way of
achieving that.

If you are using C++ (-std=c++11 or later) and you can guarantee there is
no racy usage from another thread, you can issue a memory fence using -

std::atomic_thread_fence

On Mon, May 7, 2018 at 8:42 AM Attila Magyari <atti86 at gmail.com> wrote:

> Hello,
>
> I know that zmq sockets are not thread safe. However I can't think of a
> good design (explained below) without using the socket in several threads.
> What I want to do is connect the socket in a thread, and then use it in a
> different one until the end, and never in parallel between several threads.
> I will guard the access with a mutex as well. Do you think this will be
> safe?
>
> Just in case someone might have a better idea for my design, here is what
> I'm trying to do:
> I have an application which starts another process, passes a port to the
> newly created process, so it can connect back to the main application
> through a ZMQ_PAIR socket. Both processes are local to the machine. The
> main application will request from the second one, but the second one can
> initiate messages without an explicit request as well. Do you have a nicer
> design to achieve something like this?
>
> Thank you in advance!
> _______________________________________________
> zeromq-dev mailing list
> zeromq-dev at lists.zeromq.org
> https://lists.zeromq.org/mailman/listinfo/zeromq-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.zeromq.org/pipermail/zeromq-dev/attachments/20180507/3aa30e33/attachment.htm>


More information about the zeromq-dev mailing list