2014-04-03 1 views
6

내 스레드가 결합 가능한 전화를 걸고 가입 후 my_thread.join 영원히 기다릴 것 사이에 완료하는 경우 나,thead joinable-join이 경쟁 조건을 가질 수 있습니까? 어떻게 주변에 가니?

class A 
{ 
public: 
    A() 
    { 
     my_thread=std::thread(std::bind(&A::foo, this)); 
    } 
    ~A() 
    { 
     if (my_thread.joinable()) 
     { 
      my_thread.join(); 
     } 
    } 
private: 
    std::thread my_thread; 
    int foo(); 
}; 

기본적으로 다음과 같은 클래스가 있다고 가정하자? 이 문제를 어떻게 해결합니까? 내 스레드가 joinablejoin 호출 사이에 완료하는 경우

답변

12

기본적으로 다음 my_thread.join 영원히 기다릴 것인가?

아니요. 스레드가 완료된 후에도 계속 참여할 수 있습니다. 일단 결합되거나 분리되면 그것은 결합 될 수 없게된다.

제어 스레드 thread이 파괴되기 전에 모든 스레드를 결합하거나 분리해야합니다.

+1

스레드 개체를 이동할 수 있습니다 (어떤 스레드 개체가 제어 스레드 개체인지를 변경 함). –

관련 문제