2011년 3월 16일 수요일

a pitfall using Mutex

multi-threaded application에서 mutex(lock)을 많이 쓴다.

프로그래머들이 흔히 저지르는 실수가 있다.
바로, lock이 풀리는 순서는 정해져있지 않다는 것이다.

예를 들면, A,B,C의 Thread에서 순서대로(시간 순) 공유 리소스에 lock을 걸었고, 모두 wait상태였다고 치자.
lock이 풀리는 순간, A,B,C의 순서로 권한을 주는 것이 아니다. 예측할 수 없는 순서대로 기회가 주어진다. 즉, Thread Scheduling 알고리즘에 따라서 바뀐다.

도움이 되셨다면, 광고 클릭을 ㅎㅎ ^^