pinned memory inter gpu synchronization

If multiple GPUs share a large data queue in host-mapped
(zero copy) CPU memory, on the CPU, what is the best way
to synchronize access to this shared data queue?

How do you ensure that data in this queue is correctly
enqueued/dequeued with multiple GPUs?