Posts

Showing posts with the label Semaphore

Binary Semaphore Vs A ReentrantLock

Answer : there is no real reason ever to have a binary semaphore as everything that a binary semaphore can do can also be done by a ReentrantLock If all you need is reentrant mutual exclusion, then yes, there is no reason to use a binary semaphore over a ReentrantLock. If for any reason you need non-ownership-release semantics then obviously semaphore is your only choice. Also since reentrant locks also provide one lock per object, isn't it always a better idea to prefer a reentrant lock to a binary semaphore? It depends on the need. Like previously explained, if you need a simple mutex, then don't choose a semaphore. If more than one thread (but a limited number) can enter a critical section you can do this through either thread-confinement or a semaphore. I have checked a post here that talks about difference between a binary semaphore and a mutex but is there a thing like a mutex in Java? ReentrantLock and synchronized are examples of mu...