auto lock class 가 왜 까였냐고?

병렬처리의 기본 중의 기본이 임계영역 최소화임.
임계영역엔 말 그대로 배타적으로 실행되어야 할 최소한의 코드만 들어가도록 해야 동시에 접근하는 다른 프로세스의 대기시간을 줄이지.
임계영역을 최소화하지 못하는 병렬처리 코드는 그냥 단일 프로세스로 직렬화된 코드만도 못한 성능이 나오거든.

게다가 임계영역이 크면 클수록 임계영역 내에서 context switching 이 발생할 확률이 높아진다는 치명적 문제도 있지.
lock-free 라는걸 고민해서 생각해내는 이유도 결국은 임계영역 최소화가 목적임.
lock-free 는 실제로 lock 이 없는 것이 아니라 임계영역 내에서 context switching 이 발생하는 것을 막으려는 목적이니까.
그러니 CAS 기반 lock-free 의 평균적 퍼포먼스가 critical-section 보다 떨어짐에도 불구하고 c~sect의 대안으로 제시된 것이었지.

근데 auto lock class 처럼 그 잘난 RAII 랍시고 생성자에서 락 걸고 소멸자에서 락 풀면... 물론 코딩이야 편해지고 위험성이야 줄어들겠지...
그럼 그 임계영역에 뭐가 들어갈 것 같냐? 모든 개체의 생성자 소멸자부터 전체 코드, 한마디로 함수 하나가 통째로 임계영역에 들어가버리는거임.
그럴 생각이면 뭐하러 거지같은 c++ 써? 차라리 안전하고 생산성 높은 JAVA 쓰지. 지금은 21세기잖아?

auto lock class 가 까인 것은 RAII 를 까는 것이 아냐.
임계영역 최소화라는 기본 중의 기본을 무시하는 구현이라서 까는거지.

p.s:
아 글구 난 악플러라서 말투가 존내 시니컬하니까 너무 기분나빠하지 말고 저놈 악플러구나 하구 적당히 요자만 알아들어주셈 ㅋ