728x90
Case 1
아래와 같이 Func() 내부에서 Pointer를 잘못 썻을 경우 std::thread::join() 에서 return을 안하고
Dead Lock에 걸려있는 현상이 존재한다. (std::thread의 버그인지 vs2013의 버그인지는 잘모르겠다...)
만약 join()에서 Dead Lock이 발생한다면, Pointer를 잘못 썻을 가능성을 한번 생각해보자.
Case 2
두번 째의 경우는 std::thread::join()을 하는 시점에 main() 가 없는 시점이다.
예를 들어서 Singleton Pattern 내부에서 std::thread 를 생성하고 사용한 이후 std::thread를 명시적으로 종료하지 않고,
Singleton 의 소멸자에서 std::thread::join() 을 호출했다면, Process 의 종료 시점이어서 std::thread::join() 가 반환하고 돌아 갈 곳이 없어진 것이다.
그렇기 때문에 main() 가 없어지기 전에 명시적으로 std::thread::join() 을 호출하여 std::thread 를 종료시켜주자.
728x90