Hi all, Be careful with requiring C++11 constructs. Some environments may need to use older compilers. For example, building PyZMQ from source for Python 2.7 (and some early Python 3 releases) requires building with VS2008, which does not support C++11.
Cheers, André On Sat, Feb 21, 2015 at 1:17 PM, Doron Somech <somdo...@gmail.com> wrote: > Destroying a socket is still not thread safe, so the user still need to > synchronize that > On Feb 21, 2015 6:36 PM, "Bjorn Reese" <bre...@mail1.stofanet.dk> wrote: > >> On 02/21/2015 04:44 PM, Doron Somech wrote: >> >> > (https://github.com/zeromq/libzmq/blob/master/src/mailbox_safe.hpp) >> have >> >> I had a quick look at this class... >> >> The workaround in the destructor is not thread-safe. Another thread >> may enter and wait between the sync->unlock() and the end of the >> destructor scope. You need to add a state variable to prevent this >> from happening. >> >> Furthermore, if another thread is waiting on the condition variable, >> then the mutex is unlocked while it is waiting. You need to >> notify (broadcast) the condition variable to wake up the other thread >> and get it out of the class. You will most likely need to to add a >> reference count to keep track of how many pending threads are waiting >> in order to know when it is safe to exit the destructor. >> >> The use of sync->lock() and sync->unlock() is not exception safe. I >> suggest that you use a scoped lock instead of the explicit calls. Read >> this for inspiration: >> >> http://en.cppreference.com/w/cpp/thread/unique_lock >> >> The code does not handle spurious wakeups from the condition variable. >> >> _______________________________________________ >> zeromq-dev mailing list >> zeromq-dev@lists.zeromq.org >> http://lists.zeromq.org/mailman/listinfo/zeromq-dev >> > > _______________________________________________ > zeromq-dev mailing list > zeromq-dev@lists.zeromq.org > http://lists.zeromq.org/mailman/listinfo/zeromq-dev > >
_______________________________________________ zeromq-dev mailing list zeromq-dev@lists.zeromq.org http://lists.zeromq.org/mailman/listinfo/zeromq-dev