문제

QThread::terminate() 문서에 따르면이 함수를 호출하여 스레드를 종료하지 않아도됩니다.
내 프로그램에서는 실행을 완료하기 전에 스레드를 종료해야합니다. 스레드는 약간의 계산을 수행하고 있으며 사용자가 계산을 중지하기 위해 컨트롤을 갖기를 원합니다.
전화하는 대신 어떻게 할 수 있습니까? QThread::terminate()?

도움이 되었습니까?

해결책

스레드 내의 계산으로 확인 된 스레드 외부에서 플래그를 설정하고 플래그가 설정된 경우 계산을 중지하십시오.

다른 팁

플래그를 사용하는 것은 트릭을 수행하는 가장 일반적이고 일반적인 방법이지만 Linux/Unix 플랫폼에서 작업하는 경우 대신 파이프를 사용하는 것이 좋습니다. 나는 깃발을 사용한 것과 같은 문제를 겪었습니다 (이것은 코드 스레드 덴지프를 만들고 그러한 깃발에서 발생하는 버그는 추적하기 어렵습니다). 그런 다음, 필요한 경우 효율적인 방법 인 파이프를 사용하도록 구현을 변경했습니다.

원한다면 Linux 플랫폼의 경우 파이프를 사용하여 Qthread를 종료하는 방법을 보여줄 수 있습니다.

Windows 플랫폼에서 많은 프로그래밍을 수행하지 않았기 때문에 파이프와 동등한 Windows가있을 수 있습니다.

도움이 되었기를 바랍니다

가장 좋은 것은 솔루션 스레드를 안전하게 만드는 플래그 + 뮤트를 사용하는 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top