Чтобы убедиться, что Lock
разблокирован, рекомендуется вызывать метод unlock()
из предложения finally:
lock.lock();
try{
// critical section which may throw exceptions
} finally {
lock.unlock();
}
Во избежание возможной тупиковой ситуации, в случаеисключение выдается из кода в критическом разделе.
Почему такая же практика не рекомендуется для двоичных семафоров в эквивалентных сценариях?
mutex.acquire();
try{
// critical section which may throw exceptions
} finally {
mutex.release();
}