인터럽트 스레드가 있으면 좋겠지 만 C++은 사용자에게 알려주지 않지만 c++ concurrency in action에는 간단한 구현이 하나 있습니다. 그게 당신이 필요로하는 것일 수도 있습니다. 책이 쓰레드 라이브러리의 관리자에 의해 쓰여졌 기 때문에 부스트에도 문제가 생기면 놀라지 않을 것입니다.
class interrupt_flag
{
public:
void set();
bool is_set() const;
};
thread_local interrupt_flag this_thread_interrupt_flag;
class interruptible_thread
{
std::thread internal_thread;
interrupt_flag* flag;
public:
template<typename FunctionType>
interruptible_thread(FunctionType f)
{
std::promise<interrupt_flag*> p;
internal_thread=std::thread([f,&p]{
 p.set_value(&this_thread_interrupt_flag);
f();
});
flag=p.get_future().get();
}
void interrupt()
{
if(flag) {
flag->set();
}
}
};
이제 메인에서 스레드를 쉽게 취소 할 수 있습니다. 나는이 책에 대한 링크를 달았지만 그 책의 모든 코드는 또한 무료로 온라인 상태이다. 책에 포함 된 source code에 대한 링크입니다. 도서가 없으면 탐색하기 어려울 수 있지만 읽는 것이 좋습니다.
은 분리되었거나 결합 된 스레드입니다. – aaronman
없음. thread.join()을 호출하면 응용 프로그램은 스레드의 끝을 기다리지 만 스레드는 std :: cin 호출로 차단됩니다. 스레드 분리 (fork()와 같은 현재 프로세스 분리) 이해할 수 없습니다. –
C++ 11에서 스레드를 만든 후에는 조인 또는 분리를 호출 한 후 소리가납니다. – aaronman