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 | 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:
- sleepon locks, and reader/writer locks (which are built from mutexes and condvars)
- atomic operations (which are either implemented directly by the processor or emulated in the kernel)
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.
Page updated:
