Do pthread mutexes work across threads if in shared memory?
c++, mutex, process, pthreads, shared-memory
Solution
You need to tell the mutex to be process-shared when it's inited:
http://www.opengroup.org/onlinepubs/007908775/xsh/pthread_mutexattr_setpshared.html
Note in particular, "The default value of the attribute is PTHREAD_PROCESS_PRIVATE", meaning that accessing it from different processes is undefined behaviour.
Problem
I found this: Fast interprocess synchronization method I used to believe that a pthread mutex can only be shared between two threads in the same address space. The question / answers there seems to imply: If I have two separate proceses A & B. They have a shared memory region M. I can put a pThread mutex in M, lock in A, lock in B, unlock in A; and B will no longer block on the mutex. Is this correct? Can pThread mutexes be shared in two separate processes? Edit: I'm using C++, on MacOSX.