Hi Nadav, > I have two threads that share a common large data structure. Is it safe > for the threads to coordinate exclusive usage of this shared data by > sending messages through a ZeroMQ inproc socket? In other words, is it > guaranteed that when thread B receives a message sent by thread A, the > data written by thread A prior to sending that message is committed to > memory?
This gets complex :) Internally when message is passed from one thread to another there's only an atomic operation invoked (see src_atomic_ptr.hpp). On x86 you get consistency because of its cache coherency algorithm. If you use a loose memory model CPU like Itanium, the atomic operation is done via mutex which in turn executes appropriate memory barriers. So, it should work unless you are using some very strange hardware... If so, just define ZMQ_FORCE_MUTEX when compiling 0MQ and the memory barriers will be executed as needed. Martin _______________________________________________ zeromq-dev mailing list [email protected] http://lists.zeromq.org/mailman/listinfo/zeromq-dev
