Search code examples
cipcposixshared-memorylynxos

How do I synchronize access to shared memory in LynxOS/POSIX?


I am implementing two processes on a LynxOS SE (POSIX conformant) system that will communicate via shared memory.

One process will act as a "producer" and the other a "consumer". In a multi-threaded system my approach to this would be to use a mutex and condvar (condition variable) pair, with the consumer waiting on the condvar (with pthread_cond_wait) and the producer signalling it (with pthread_cond_signal) when the shared memory is updated.

How do I achieve this in a multi-process, rather than multi-threaded, architecture?

Is there a LynxOS/POSIX way to create a condvar/mutex pair that can be used between processes?
Or is some other synchronization mechanism more appropriate in this scenario?


Solution

  • The standard way to create a process shared mutex/cond. variable is to initialize them with an attribute where you set pthread_mutexattr_setpshared/pthread_condattr_setpshared. Check if LynxOS supports that.

    You'll naturally need to place such mutexes/cond. variables in shared memory somehow, so all processes can use it.