
Hi to all, Recently some bug reports were issued against Boost.Interprocess' condition variable. Since my multithreading skills are limited at best, I was wondering if Boost.Thread developers/threading experts would like to help on rewriting the condition variable. Let me explain some issues: Native vs. emulated condition vars ---------------------------------- Some POSIX systems have process-shared condition variables. In those systems interprocess_condition is a wrapper around pthread_cond_t. In the rest of platforms (including Windows and MacOS) an emulated condition variable is used. Emulated condition vars ----------------------- Emulated condition variables store integers and use atomic operations and busy waits/yields() to emulate process-shared condition variables. Reasons to use integers and busy waits are: -> Independent from address mapping. -> The condition variable should be compatible with memory mapped files. A user can map a file, build a condvar, unmap the file, reboot the system, map it again and continue working. Since there is no atomic operations library in Boost I use my own atomic operations (taken from apache): http://svn.boost.org/svn/boost/trunk/boost/interprocess/detail/atomic.hpp The emulated condition variable is here: http://svn.boost.org/svn/boost/trunk/boost/interprocess/sync/emulation/inter... So if you are a thread expert, Boost.Interprocess users and I need your help to write a robust process-shared condition variable emulation. Regards, Ion