lock-free alogorithm이 대안일까?
lock-free 와 최적화에서 트랙백
위 글 말미에 T아저씨도 언급했지만, 공짜 점심의 시대는 끝나가고 있다. (Your free lunch will soon be over. What can you do about it?) 물론 최근에 출시되신 진리의 네할렘님께서 아직 남겨진 공짜 점심이 있다는 걸 보여주긴 했지만, 어쨌든 곧 공짜 점심의 시대가 끝날 것 같긴 하다.
바라든 바라지 않든, 시대가 parallel로 가고 있으니 시대의 고전인 Amdahl’s law를 다시 살펴보자.

Amdahl's law
우리의 목표는 Break Amdahl’s Law!에서 Herb Sutter가 언급한 것처럼 s를 줄이거나 p를 늘리는 데에 있다. lock-free의 지향점 또한 s를 p로 변환하여 s를 줄이는데 있다.
하지만, 현실은 좀 시궁창이라서, 가장 많이 쓰고 널리 알려진 lock-free alogorithm인 lock-free queue의 경우에도 s를 p로 변환하지는 못한다. lock-free queue가 lock을 이용한 구현에 비한 장점은 push와 pop이 동시에 이루어진다는 것 뿐이고, 이는 단지 이상적인 경우에 Amdahl’s law의 밑변에 있는 s를 s/2로 바꿔줄 뿐이다. 거기에 그렇게 바꾸는 데 필요한 비용또한 싼 편은 아니다.(reorder와 lock-free algorithm 참고)
s를 p로 완전히 전환시켜줄 lock-free alogorithm이 나타난다면, 쓰지 않을 이유는 없다. 하지만 적어도 지금은 아니다.:p 차라리 그걸 도입할 시간에 s를 줄이거나 p를 늘려줄 contents specific한 디자인의 변경을 찾아보는 게 낫다.
한줄요약. 닥치고 spin-lock.