Multithreaded Resource Managers
When you write a multithreaded resource manager, you should design it so there's always at least one RECEIVE-blocked thread.
This design prevents priority inversion for any process that invokes (i.e., sends a message to) the resource manager. One strategy to achieve this is to do system analysis to determine peak loads on the resource manager's thread pool, and then configure it to have enough threads such that at any time there is a thread available to receive a message.
The kernel (procnto) itself is a multithreaded resource manager, and you can configure its thread pool to reduce the likelihood of priority inversion occurring. For more information, see the PROC_THREAD_POOL description in the procnto entry of the Utilities Reference.
Also, the kernel uses priority inheritance to reduce the effects of priority inversion if it does
occur; for more information, see Server boost
in the Interprocess Communication chapter of the System Architecture guide.