QThread::terminate() 文件指出,它不建议终止一线通过这个叫功能。
在我的程序,我需要终止一个线程之前就完成执行。线正在执行一些重计算和我想的用户有控制权停止计算。
我怎么可以这样做,而不是呼叫 QThread::terminate()?

有帮助吗?

解决方案

设置一个标志从外线检查是通过计算内线及停止计算,如果标志的设置。

其他提示

使用的标志是一个显而易见并最常见的方式来做到这一招,但如果你正在一个linux/unix平台,我会建议你使用管道,而不是。我有同样的问题,在那里我用一个标志(这使得码threadunsafe,以及错误所产生的这样的一个标志是很难跟踪),然后我改变了执行使用管道是一种有效的方式来做活儿。

如果你想要的,对于一个linux平台,我可以向你展示如何使用管道终止每.

你可能还有窗户,相当于管道,我不知道很多关于作为我没有做过太多的编程在视窗平台。

希望这可以帮助

最好是使用标志+互斥这将使解决线的安全。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top