message queues use a mutex as a sync mechanism. But they need to atomically block and unlock the mutex.