다음과 같은 샘플 프로그램이 있다고 해보자.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | //std_thread_test.cpp void int |
컴파일시에 다음처럼 -pthread 옵션을 설정해야한다.
g++ -std=c++11 -pthread -o std_thread_test std_thread_test.cpp
옵션을 주지 않는 경우엔 컴파일은 되지만 실행시 core dump가 발생한다.
사용된 g++의 버전은 g++ 4.8.2 으로 c++11 의 기능을 대부분 지원한다.
그렇다면 의문점이 생긴다. c++11 을 지원한다는 g++에 왜 -pthread 란 옵션이 필요한가?
언어 차원에서 지원된다는데 왜 pthread 라이브러리 이런게 보이는건지..?
좀 생각해보니 spec과 구현의 문제라는걸 알게 되었다.
c++11 의 thread specification 을 g++에서는 기존의 pthread 라이브러리를 사용해서 구현한것일뿐이다.(
이건 g++ -v 을 실행해보면 확인할수 있다.
Thread model로 posix 를 사용한다 (좀 허무)