What's New in the Solaris 8 Operating Environment

User-level Priority Inheritance

Real-time (RT) applications may run more than one thread in the real-time scheduling class at a time. It is possible for an RT thread with a low priority to get a mutual exclusion lock that then is required by an RT thread with a higher priority. The high priority thread must then wait for the low priority thread to get done with the mutex lock and release it. This condition is called "priority inversion."

The RT threads feature implements the POSIX interfaces (previously only dummied in) that let the high priority thread "lend" its priority to the low priority thread until it releases the lock.

RT threads that use priority inheritance or priority ceiling locks should use PTHREAD_SCOPE_SYSTEM scheduling scope (or bound threads). Unbound threads use PTHREAD_SCOPE_PROCESS scheduling and are unsuitable for the needs of real-time applications.

For more information, see the Multithreaded Programming Guide.