표준 STL에서 쓰레드 안전성을 갖춘 컨테이너가 없다는 것에 놀라지는 않는다. 나도 지금에서야 쓰레드 개념을 잡았으니.. 할말 없지 뭐, 지금은 다중 쓰레드 기반 프로그램이 많기 때문에, 이번 항목은 STL 컨테이너가 다중 쓰레딩 지원을 할수 있도록 요령을 가르쳐 준다.

STL 컨테이너의 다중 쓰레드 지원 방법은 SGI(실리콘 그래픽스) 재정한 방식이 가장 좋다고 하고, 필자는 이중 두가지 핵심을 뽑아 말해 준다.
  • 여러 쓰레드에서 읽는 것은 안전해야 한다.
  • 여러 쓰레드에서 다른 컨테이너에 쓰는 것은 안전해야 한다.
말처럼 쉽지만은 않기 때문에, 세부적인 기능(어떻게 해야 하는가?)에 어떤것을 두어야 할지 필자는 설명한다.
  • 컨테이너의 멤버 함수를 호출하는 시간 동안 컨테이너에 락 걸기
  • 컨테이너가 만들어 내어 주는 반복자의 유효 기간 동안에 컨테이너에 락 걸기
  • 컨테이너에 대해 실행된 알고리즘 수행 시간 동안 컨테이너에 락 걸기
12항목은 요령만 짚어주고, 넘거가야 될듯(책의 내용은 여기서 끝.. )

뮤텍스나 세마포어를 RAII(resource acquisition is initialization : 리로스 획득은 초기화) 형식으로 만들어 사용해야 하는건 기본이고, 개인적인 생각으로, 컨테이너를 class 에 넣어두어 관리 하면, 좀 보기도 편하고, 관리도 편해지지 않을까 한다.




  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 라이프코리아트위터 공유하기
  • shared
  • 카카오스토리 공유하기