An exclusive lock is supposed to stop all other access types, by definition.
You have the right model. It's usually the one implemented for shared memory access across processes - System V semaphores. Normally, there are two semphores (mutexes).
See Section 5.2 Process Semaphores in:
http://www.advancedlinuxprogramming....p-ch05-ipc.pdf