C++/ detach된 무한 loop thread 종료법이 있나요
글쓴이: Fr_YP / 작성시간: 일, 2019/08/18 - 5:30오후
#include <iostream> #include <thread> using namespace std; void func1(){ while(1){ cout<< "~~" <<endl; } } int main(){ thread t(func1); t.detach(); }
메인이 끝나지 않을 경우 쓰레드는 분리되어 무한히 "~~"을 찍어낼텐데
메인에서 detached 스레드를 종료시킬 방법이 있을까요? pthread 안쓰구요...
Forums:
https://kldp.org/node/152422
https://kldp.org/node/152422
Signature :) - "여유를 갖고 행동하되 게을러지지 말자"
결국 '무한루프'를 실행하는 스레드의 종료법은 없다는
결국 '무한루프'를 실행하는 스레드의 종료법은 없다는 이야기이군요.
detach를 하지 않았더라도, 원하시는 기능은 현재
detach를 하지 않았더라도, 원하시는 기능은 현재 std::thread로 구현이 불가능합니다.
std::thread는 스레드 자체의 협조 없이 외부에서 스레드를 강제 종료시킬 방법이 없기 때문이죠. native handle을 얻어다가 pthread 라이브러리로 조작한다던가 하면 가능은 한데 그건 안 된다고 하셨고...
결국 표준 라이브러리 범위 안에서 이식성을 가지게 구현하려면 스레드 자신이 협조적일 수밖에 없습니다. C++ Concurrent in Action의 interruptible_thread 구현을 참고해보세요.
댓글 달기