DeadLock이 발생할 수 있는 두 번째 예제를 통해 어떻게 해결할 수 있을지에 대한 해결방법이었다. 하지만 아직 Lock을 정확하게 구현해본게 아니라, 감이 잘 잡히지 않았는데 이제 부터 제대로 배울 수 있을 거 같다.
무한 대기하기(Spine Lock)
이미 차지되어있는 Lock에 접근하기 위해 빙글뱅글 돌면서 Lock이 비어있는지 계속 체크하는 상태
랜덤한 시간마다 와서 체크하기(Context Switching)
자리로 돌아가서 랜덤한 시간마다 다시 와서 비어있느 체크하기
직원에게 부탁하고 자리에 가기(Auto Reset Event)
제 3자인 직원에게 부탁하여 자리가 비면 알려달라고 요청하는 방식
Lock을 어떤식으로 활용하면 좋을지에 대한 감이 조금 더 오기 시작한다. 멀티쓰레드에서 Lock 처리하는게 60% 정도 차지할 정도로 중요하다니, 꼼꼼하게 해봅세