Synchronization services

Updated: April 19, 2023

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 Yesa No
Condvars Yes No
Barriers Yesa No
Sleepon locks No No
Reader/writer locks Yesa No
Semaphores Yes Yes (named only)
Send/Receive/Reply Yes Yes
Atomic operations Yes No

a Sharing this type of object between processes can be a security problem; see Safely sharing mutexes, barriers, and reader/writer locks between processes,” later in this chapter.

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.