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

+ Recent posts