표준 STL에서 쓰레드 안전성을 갖춘 컨테이너가 없다는 것에 놀라지는 않는다. 나도 지금에서야 쓰레드 개념을 잡았으니.. 할말
없지 뭐, 지금은 다중 쓰레드 기반 프로그램이 많기 때문에, 이번 항목은 STL 컨테이너가 다중 쓰레딩 지원을 할수 있도록
요령을 가르쳐 준다.
STL 컨테이너의 다중 쓰레드 지원 방법은 SGI(실리콘 그래픽스) 재정한 방식이 가장 좋다고 하고, 필자는 이중 두가지 핵심을 뽑아 말해 준다.
뮤텍스나 세마포어를 RAII(resource acquisition is initialization : 리로스 획득은 초기화) 형식으로 만들어 사용해야 하는건 기본이고, 개인적인 생각으로, 컨테이너를 class 에 넣어두어 관리 하면, 좀 보기도 편하고, 관리도 편해지지 않을까 한다.
STL 컨테이너의 다중 쓰레드 지원 방법은 SGI(실리콘 그래픽스) 재정한 방식이 가장 좋다고 하고, 필자는 이중 두가지 핵심을 뽑아 말해 준다.
- 여러 쓰레드에서 읽는 것은 안전해야 한다.
- 여러 쓰레드에서 다른 컨테이너에 쓰는 것은 안전해야 한다.
- 컨테이너의 멤버 함수를 호출하는 시간 동안 컨테이너에 락 걸기
- 컨테이너가 만들어 내어 주는 반복자의 유효 기간 동안에 컨테이너에 락 걸기
- 컨테이너에 대해 실행된 알고리즘 수행 시간 동안 컨테이너에 락 걸기
뮤텍스나 세마포어를 RAII(resource acquisition is initialization : 리로스 획득은 초기화) 형식으로 만들어 사용해야 하는건 기본이고, 개인적인 생각으로, 컨테이너를 class 에 넣어두어 관리 하면, 좀 보기도 편하고, 관리도 편해지지 않을까 한다.
'책 정리 > Effective STL' 카테고리의 다른 글
항목 17 : 쓸데없이 남은 용량은 "바꿔치기(swap) 묘수"를 써서 없애 버리자. (0) | 2008.07.17 |
---|---|
항목 16 : 기존의 C API에 vector와 string을 넘기는 방법을 알아두자 (0) | 2008.07.17 |
항목 15 : 잊지 말자! string은 여러 가지 방식으로 구현되어 있다는 사실을... (0) | 2008.07.16 |
항목 14 : reserve는 필요 없이 메모리가 재할당되는 것을 막아 준다. (1) | 2008.07.16 |
항목 13 : 동적으로 할당한 배열보다는 vector와 string 이 낫다. (0) | 2008.07.15 |
항목 11 : 커스텀 할당자를 제대로 사용하는 방법을 이해하자. (0) | 2008.07.15 |
항목 10 : 할당자(allocator)의 일반적인 사항과 제약 사항에 대해 잘 알아 두자. (2) | 2008.07.14 |
항목 9 : 데이터를 삭제할 때에도 조심스럽게 선택할 것이 많다. (0) | 2008.07.13 |
항목 8 : auto_ptr의 컨테이너는 절대로 만들지 말자. (0) | 2008.07.13 |
항목 7 : new로 생성한 포인터의 컨테이너를 사용할 대에는 컨테이너가 소멸되기 전에 포인터를 delete하는 일을 잊지 말자. (0) | 2008.07.13 |
최근댓글