当前位置: 代码迷 >> QT开发 >> 多线程修改循环变量有关问题
  详细解决方案

多线程修改循环变量有关问题

热度:79   发布时间:2016-04-25 04:57:37.0
多线程修改循环变量问题
请问我有一个界面线程通过按钮修改bool变量i,
一个工作线程中有
while(get(i))
{
...
}
i的初始值为true,请问工作可以通过界面线程使工作线程退出while循环吗?



------解决方案--------------------
理论上可以,但为什么要这样?用信号和槽的方式,能很好的解决问题。
------解决方案--------------------
没问题,线程之间共享内存。
------解决方案--------------------
把i放到线程类里面,用QMutex保护i。
class xxxx :public QThread
{
xxxxx;
public:
void seti(bool i);

private:
QMutex mutex;
bool myi; 
};
void xxxxx::seti(bool i)
{
mutex.lock();
myi = i;
mutex.unlock();
}

while(true)
{
mutex.lock();
if(myi)
{
mutex.unlock();
break;
}
mutex.unlock();
}
大概就是这个意思。
  相关解决方案