
SyncSemaphore::lock은 동기화(semaphore) 객체의 lock 메소드를 사용하여, 여러 스레드가 공유 자원에 접근하는 것을 제어하는 데 사용됩니다.
SyncSemaphore::lock을 사용하는 이유는, 여러 스레드가 공유 자원에 동시에 접근하는 것을 막아, 데이터의 일관성을 유지하고, 프로그램의 안정성을 보장하기 위함입니다.
lock을 걸기 전, 스레드는 공유 자원에 접근할 수 없으며, unlock을 하기 전, 스레드는 공유 자원에 접근할 수 있습니다.
SyncSemaphore::lock을 사용하여 deadlock이 발생하는 경우는, 두 스레드가 서로 다른 자원에 lock을 걸어, 서로가 다른 자원을 해제하는 것을 기다리게 되면 발생합니다. 예를 들어, 스레드 A가 자원 1에 lock을 걸고, 스레드 B가 자원 2에 lock을 걸어, 스레드 A가 자원 2를 해제하고, 스레드 B가 자원 1을 해제하는 것을 기다리게 되면 deadlock이 발생합니다.
deadlock을 피하기 위해, lock을 사용할 때, lock의 순서를 정의하고, lock을 해제하는 순서를 정의하는 것이 좋습니다.
2025-06-17 01:20