멀티프로그래밍 위키로 바로가기 → http://www.devnote.net/wiki
C++에서 local static 변수를 사용할 경우, 멀티스레드 프로그램에서 이른바 race condition이 생길 가능성이 있습니다. 이에 관해 아래 블로그에 자세한 설명이 나와 있습니다.

http://blogs.msdn.com/oldnewthing/archive/2004/03/08/85901.aspx

위 페이지의 첫번째 예제같이 보통 단순한  전역 bool 값을 사용하는 경우는 쉽게 문제를 알아낼 수 있지만, static object를 함수 안에 사용하는 경우 컴파일러가 내부 최적화하는 과정에서 전역변수 (두번째 예제의 "constructed")를 만들어 내기 때문에, 모르고 지나칠 가능성이 많습니다.

그러니까, 특히 C++를 사용한 멀티스레드 프로그램에서는 local static 변수를 사용을 자제하는 것이 좋겠습니다.

크리에이티브 커먼즈 라이센스
Creative Commons License

Trackback Address :: http://devnote.net/trackback/77


◀ PREV : [1] : ... [22] : [23] : [24] : [25] : [26] : [27] : [28] : [29] : [30] : ... [93] : NEXT ▶