게임서버/멀티쓰레드 프로그래밍
Lock 구현 이론
코다람쥐
2022. 3. 11. 11:52
1. 스핀락(SpinLock)
락이 열릴 때 까지 계속 대기하는 방법.
장점.
락이 풀리자마 빠르게 점유할 수 있다.
단점.
락이 열리지 않으면 계속 대기해야되서 성능이 저하될 수 있다.
2. 컨텍스트 스위칭(Context Switching)
일정한 주기로 락이 열려있는지 확인하고 점유하는 방법.
장점.
락이 열릴 때 까지 기다리는 동안 다른 작업을 할 수 있다.
단점.
쉬는 사이에 다른 쓰레드가 락을 점유해버릴 수 있다.
다른 작업을 하러 갔다가 다시 오는 과정도 성능에 부담이 된다.
3. 오토리셋 이벤트(AutoRestEvent)
이벤트 방식을 이용하여 락이 열리면 대기했던 쓰레드에게 열렸다는 사실을 전달하는 방식.
장점.
락이 열릴 때 까지 기다리는 동안 다른 작업을 할 수 있다.
단점.
없음.