
SyncSemaphore::lock을 사용할 때, lock이 풀리는지 확인하는 방법은 없습니다. SyncSemaphore::lock은 비동기식으로 동작하므로, lock이 풀렸는지 확인할 수 있는 방법이 없습니다.
만약 다른 스레드에서 SyncSemaphore::unlock을 호출하지 않았는데, SyncSemaphore::lock을 호출한 스레드가 다시 lock을 풀고자 하면, Deadlock이 발생할 수 있습니다. Deadlock은 두 개 이상의 스레드가 서로를 기다리며, 프로그램이 멈추는 상황입니다.
SyncSemaphore::lock을 호출하는 스레드가 종료되면, lock이 자동으로 풀리지 않습니다. 스레드가 종료되면, 스레드의 자원은 운영체제에 의해 반환되지만, SyncSemaphore::lock은 스레드가 종료되지 않아도 풀리지 않습니다. 따라서, 종료된 스레드의 lock을 풀고자 하면, Deadlock이 발생할 수 있습니다.
2025-03-24 07:24