스레드 항목 기능을 종료 할 때 함께 스레드 개체를 삭제하고 싶습니다. 쓰레드 함수를 시작하고 쓰레드 객체 인스턴스를 소유하고있는 객체에 공유 포인터를 건네 주면 쓰레드 함수가 종료 될 때 동시에이 객체를 쓰레드 객체와 함께 파괴합니다.스레드 개체 수명 및 스레드 수명 늘리기
편집 : 어쩌면 내가 왜 그렇게하고 싶은지 설명 할 것입니다. 낮은 수준의 dbus API를 사용해야합니다. 내가 원하는 것은 자체 스레드를 시작하고 DISCONNECT 메시지가 도착할 때까지 들어오는 메시지를 기다리는 어댑터 클래스를 작성하는 것입니다. 도착하면 스레드를 닫고 어댑터 자체를 종료하고 싶습니다. 어댑터는 활성 오브젝트이며 스케줄러에 전송 된 메소드를 실행합니다. 이 메소드는 dbus에서 메시지를 읽은 후 다시 스케줄러 큐에 놓입니다. 그러나 DISCONNECT 메시지 인 경우 메소드를 전송하지 말고 스케줄러 스레드를 종료하여 Adapter 객체를 파괴해야합니다. 흠 ... 너무 복잡해 보이는군요 ...
아이디어의 더 간단한 버전 인 http : // stackoverflow가 유효해야합니다.co.kr/a/3974471/2183287 –
왜 boost :: thread 객체가 살아 있어야합니까? 스레드의 죽음은 외부 코드에 대해 예측할 수 없으므로 스레드 개체의 수명이 예측할 수 없으므로 효과적으로 쓸모 없게됩니다. 그리고 스레드는 자신의 std :: thread 오브젝트에 액세스해서는 안됩니다. 쓰래드에서 단순히'detach()'하는 것을 고려 했습니까? –
아래의 답변을 살펴보면 모니터 할 방법이없는 스레드를 분리하는 것은 좋은 생각이 아닙니다. – user2301299