Synchronization services

The QNX Neutrino RTOS provides the POSIX-standard thread-level synchronization primitives, some of which are useful even between threads in different processes.

The synchronization services include at least the following:

Synchronization service Supported between processes Supported across a QNX Neutrino LAN
Mutexes Yes No
Condvars Yes No
Barriers Yes No
Sleepon locks No No
Reader/writer locks Yes No
Semaphores Yes Yes (named only)
FIFO scheduling Yes No
Send/Receive/Reply Yes Yes
Atomic operations Yes No

The above synchronization primitives are implemented directly by the kernel, except for:

Note: You should allocate mutexes, condvars, barriers, reader/writer locks, and semaphores, as well as objects you plan to use atomic operations on, only in normal memory mappings. On certain processors, atomic operations and calls such as pthread_mutex_lock() will cause a fault if the object is allocated in uncached memory.