프로그래밍 언어2015. 8. 26. 10:36

리눅스 서버에서 std::thread, std::async를 사용하는 간단한 테스트를 하는데, 컴파일을 마치고 실행을 하니 아래와 같은 에러가 발생했다.


terminate called after throwing an instance of 'std::system_error'
  what():  Operation not permitted
Aborted (core dumped)


역시나 구글링 + 스택오버플로우에서 해답을 찾았다.

g++ (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3를 사용하고 있는데, 컴파일 버전이 낮아서 그런건지 확실하지 않으나, std::thread를 제대로 지원하지 못하고 있는 듯.


암튼 해결 방법은 컴파일 옵션에 -pthread 를 추가 해 주면 된다.

std::thread가 pthread로 동작을 해야 하는데, 내부적으로 처리를 하지 못 하는 건지...


내가 서버 관리자도 아니고, 내 맘대로 컴파일러 버전 올렸다가 뭐래도 안되면 곤란하니,

최신 컴파일러 소스 받아서 빌드하고 테스트 해 봐야겠다.


(Visual Studio 2015는 윈도우 플랫폼에 딱 맞춰서 개발을 할테니, 이런 수고가 필요 없다. VS2015 짱!!!!)

Posted by 세월의돌