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?
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.