Binary Semaphore vs Reentrant Lock