SGI에서 제정한 STL 다중 쓰레딩 지원 항목
|
STL에서는 위에 써있는 당연한것 이외에는 다중 쓰레딩 환경에 대해 전혀 지원받을수 없으니 자체적으로 해결하는 것이 좋다.
클라이언트 코드레벨에서 뮤텍스나 크리티컬섹션을 처리해 주는 수밖에 없다.
클라이언트 코드레벨에서 뮤텍스나 크리티컬섹션을 처리해 주는 수밖에 없다.
Lock 클래스의 구현을 생각해 보는것도 좋다 Lock 클래스 같은 경우는 생성자에서 객체(일반적으로 컨테이너)를 받아 다른 쓰레드에서 사용 못하도록 처리하고 소멸자에서 잠근걸 푸는 형식이 일반적이다.
위의 코드 같은 경우 예외 상황이 발생해도 소멸자의 호출은 보장하므로 v가 영원히 다른 쓰레드에서 사용못하게 되는 일은 없다.
vector<int> v;
…
{
Lock(v); // 잠근다.
……
} // 자동으로 소멸.