참고 : http://stackoverflow.com/questions/10915233/stdthreadjoin-hangs-if-called-after-main-exits-when-using-vs2012-rc
std::thread 객체를 Windows에서 static으로 사용하는 경우.
join을 호출하면 내부 API가 락을 시도하는데, 프로세스 종료 시점에서 join을 시도하면,
- main() 이 반환된다.
- 메인스레드가 종료를 위해 프로세스 내부적으로 사용되는 특정한 lock을 건다.
- 전역 객체들에 대해 소멸자를 호출하는데 소멸자가 std::thread::join을 호출한다면,
- child 스레드가 자신의 종료를 위해 프로세스에 lock을 시도하는데 이미 메인스레드가 lock을 잡고있다.
- DEADLOCK.
스택오버플로의 게시물에 의하면 Windows에서만 발생하는 문제인 것 같다.