我在场景中,当线程正在根据GUI上的用户操作运行时必须终止线程。我在Windows上使用Qt 4.5.2。一种方法如下:如何根据用户请求安全地停止正在运行的线程?
class MyThread : public QThread
{
QMutex mutex;
bool stop;
public:
MyThread() : stop(false) {}
void requestStop()
{
QMutexLocker(&mutex);
stop = true;
}
void run()
{
while(counter1--)
{
QMutexLocker(&mutex);
if (stop) return;
while(counter2--)
{
}
}
}
};
请注意,上面的代码是最小的。运行功能可能需要20秒才能完成,所以我想避免锁定和解锁循环中的mutex
变量。有没有其他方法比这种方法更快。
在此先感谢。
挥发性的相关MSDN文档是http://msdn.microsoft.com/en-us/library/12a04hfd.aspx – Srikumar 2009-11-10 09:27:13
谢谢。 volatile关键字的使用现在变得更加清晰。 – Donotalo 2009-11-11 03:56:38