Do pthread mutexes work across threads if in shared memory?

anon picture anon · Mar 5, 2010 · Viewed 21.1k times · Source

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.

Answer

Steve Jessop picture Steve Jessop · Mar 6, 2010

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.