Spin Lock 은 이름이 뜻하는대로, 만약 다른 스레드가 lock을 소유하고 있다면 그 lock이 반환될 때까지 계속 확인하며
기다리는 것이다.
좀 더 자세한 설명은 영문 위키피디아를 참조하자.
http://en.wikipedia.org/wiki/Spinlock
Spin Lock 은 다음과 같은 특성을 갖는다.
- Lock을 얻을 수 없다면, 계속해서 Lock을 확인하며 얻을 때까지 기다린다. 이른바 바쁘게 기다리는 busy wating이다.
- 바쁘게 기다린다는 것은 무한 루프를 돌면서 최대한 다른 스레드에게 CPU를 양보하지 않는 것이다.
- Lock이 곧 사용가능해질 경우 컨택스트 스위치를 줄여 CPU의 부담을 덜어준다. 하지만, 만약 어떤 스레드가 Lock을 오랫동안 유지한다면 오히려 CPU 시간을 많이 소모할 가능성이 있다.
- 하나의 CPU나 하나의 코어만 있는 경우에는 유용하지 않다. 그 이유는 만약 다른 스레드가 Lock을 가지고
있고 그 스레드가 Lock을 풀어 주려면 싱글 CPU 시스템에서는 어차피 컨택스트 스위치가 일어나야하기 때문이다
좀 더 자세한 설명은 영문 위키피디아를 참조하자.
http://en.wikipedia.org/wiki/Spinlock
'Dev.Programming > Other.Computer.Science' 카테고리의 다른 글
| Process 와 Thread 의 차이점 (0) | 2010/04/20 |
|---|---|
| Race Condition 이란? (0) | 2010/04/20 |
| Spin Lock 이란? (0) | 2010/04/20 |
| Live Lock 이란? (0) | 2010/04/20 |
| 시스템 콜(System Call) 의 정의 및 STD C Lib. 와 구분하는 방법 (0) | 2010/04/20 |
| AI - Production System (0) | 2009/10/28 |
TAG spinlock


