The OS provides a set of dispatch_* functions that:
- allow a common blocking point for managers and clients that
need to support multiple message types (e.g., a resource
manager could handle its own private message range).
- provide a flexible interface for message types that isn't
tied to the resource manager (for clean handling of private
messages and pulse codes)
- decouple the blocking and handler code from threads. You
can implement the resource manager event loop in your
main code. This decoupling also makes for easier debugging,
because you can put a breakpoint between the block
function and the handler function.
For more information, see the
Resource Managers
chapter of Getting Started with QNX Neutrino, and the
Writing a Resource Manager
guide.