Don*_*alo 3 c c++ qt multithreading
我正处于根据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--)
{
}
}
}
};
Run Code Online (Sandbox Code Playgroud)
请注意,上述代码很少.运行功能在完成之前最多可能需要20秒,所以我想避免mutex在循环中锁定和解锁变量.有没有比这种方法更快的方法.
提前致谢.
它不能直接满足您的需求,但您不能将您的互斥体范围更加严格吗?
while(counter1--) {
{
QMutexLocker(&mutex);
if (stop) return;
} // End locking scope : we won't read it anymore until next time
while(counter2--)
...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4580 次 |
| 最近记录: |