Latches and enqueues are both types of locks.
latches are lightweight serialization devices. we try to get a latch, spin for a bit and try again. so when getting a latch, we try and try and try -- we are not told that the latch is available, we keep trying to get it (eg: not necessary a first come, first serve lock). we use latches to serialize access to in memory data structures typically (like SGA data structures)
enqueues are heavyweight serialization devices. if we cannot get an enqueue, we "go to sleep" and when the enqueue is available -- we are told about it in a first come, first serve manner. We use enqueues to perform row level locking for example.
A semaphore is an operating system supplied serialization device that one might use to implemented latching or enqueues.
So, latches and enqueues are types of locks, semaphores a programming device one might use to implement latching and enqueuing. |