我在場景中,當線程正在根據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