Spin lock
크리티컬 섹션이 있고, 한 스레드가 크리티컬 섹션에 대한 lock을 소유하고 있다면 그 lock이 반환될 때 까지 계속 확인하며 기다리는 것을 의미(컨텍스트 스위칭을 하지 않고 루프를 돌면서 재시도 하는 것, Busy waiting)한다. Lock-Unlock 과정이 매우 짧아서 lock하는 경우가 드문 경우에 유용하다.
장점 : 잦은 컨텍스트 스위칭을 줄여서 효율을 높일 수 있다.
단점 : Lock이 길게 유지된다면 나머지 blocking 상태의 쓰레드들이 계속 무한루프를 돌아 CPU를 쓸데없이 낭비하는 경우가 생길 수 있다.
Live lock
2개 이상의 쓰레드가 다른 쓰레드의 행동에 영향을 받으며 진행되는 경우, 쓰레드간의 신호가 서로 맞지 않아 신호가 맞을 때까지 진행하지 못해서 마치 행동은 일어나지만 block된것처럼 보이는 현상을 말한다.
좋은 예시를 들자면 한 길을 지나가는데 마주보는 사람이 서로 같은방향으로 계속 비켜줘서 지나가지 못하는 경우를 들 수 있다.
Dead lock
2개의 쓰레드가 동시에 lock을 건 상태에서 서로 lock이 풀리기를 기다리는 상황을 말한다. 이렇게 되면 작업이 진행되지 않고 영원히 기다리게되는 문제가 있다.
[출처] Spin lock, Live lock, Dead lock|작성자 쿨랜드
댓글 없음:
댓글 쓰기