Or put the Queue reference itself into a single element queue and when you read it, it becomes unavailable for other processes to access. When you're finished with it, pop it back in. Behind the scenes probably actually more work than AQs idea but it allows you to pass only a single wire.
Tweak Intaris' solution slightly -- use a Data Value Reference (DVR) instead of a single-element queue (SEQ). The DVRs solve the problem if you have to do multiple resource acquisition for a given operation. With SEQs, you're on your own to do mutex sorting. And DVRs make the mutex UNlock obvious and well sequenced.
Intaris' solution (whether with DVRs or with SEQs) does have a major advantage over the semaphores -- you cannot forget to acquire the lock before using the queue. 🙂 And it is the same performance as the semaphore solution. The only reason I don't promulgate that solution more is that a reference of a reference boggles some people, where as a semaphore guarding a queue is something more users in my experience grasp quickly.
To be fair to NI, though, it is probably easier to understand than something like char**, at least as long as you have strict types and good naming/documentation. The limited API for each reference type also helps.