On 30 November 2013, Pieter Hintjens said:
> Hi Justin,
> 
> This is an area of some debate. We've had patches to libzmq that made
> sockets thread safe, and removed those patches again. Sharing sockets
> between threads for the most part is bad for design and performance.
> However there are languages where this just essential, for the reasons
> you describe.
> 
> My advice would be to solve this in the language binding. Simply
> create socket access routines (send/recv) that do the necessary
> locking.

But doesn't that mean holding a lock during a potentially blocking
operation? E.g. if I send() to a REQ socket that has hit its
high-water mark, send() will block. If I'm holding a mutex during that
operation, than other threads can block on that mutex for a long time.
That sort of nasty cascading lock situation can go very bad very
quickly in my experience.

       Greg
_______________________________________________
zeromq-dev mailing list
[email protected]
http://lists.zeromq.org/mailman/listinfo/zeromq-dev

Reply via email to