找回密码
 立即注册
收起左侧

QT里怎么关闭线程?

5
回复
8037
查看
[复制链接]

尚未签到

来源: 2015-7-8 21:58:28 显示全部楼层 |阅读模式
10Qter豆
本帖最后由 lfqt 于 2015-7-8 22:01 编辑

1、我的硬件平台是arm9,目前我是这么关线程的,但是感觉有问题,请高手指教,谢谢。。。
2、子线程里,重新实现了run函数;
t_stop 初始化为false;
大概是这样的:
void MyThread::stop()
{
      mutex.lock;
       t_stop = true;
       mutex.unlock;
}

void MyThread::run()
{
    forever {
      mutex.lock;
      if (t_stop) {
       t_stop = false;
       mutex.unlock;
       break;
      }
     mcondition.wait(&mutex, 15s);//延时15s
     dosomething();//会耗时大概10s种;uart和其他模块交互
     mutex.unlock;
   }  
}


3、然后主线程里面先打开,然后过段时间再关闭线程。
关闭:t->stop(); //MyThread t;
就如上所示的关闭线程这样正确吗?

4、还有一个问题,就是子线程里
如果是如下所写,这样有区别吗?
void MyThread::run()
{
。。。。//和上面的写法相同
。。。
     mcondition.wait(&mutex, 15s);//延时15s
     mutex.unlock;
     dosomething();//会耗时大概10s种;
   }  
}

最佳答案

查看完整内容

那个用movetothread例子是不需要关闭,运行完就自动离开线程
回复

使用道具 举报

尚未签到

2015-7-8 21:58:29 显示全部楼层
lfqt 发表于 2015-7-9 11:13
没看到有关闭的地方呀,麻烦你给我截个图上来,谢谢

那个用movetothread例子是不需要关闭,运行完就自动离开线程
回复

使用道具 举报

尚未签到

2015-7-8 23:41:39 显示全部楼层
可以参考qthread文档里面的第一个例子
回复

使用道具 举报

尚未签到

2015-7-9 08:54:27 显示全部楼层
Joey_Chan 发表于 2015-7-8 23:41
可以参考qthread文档里面的第一个例子

具体是哪个,你可以说一下吗?或者例子的名字是什么?谢谢
回复

使用道具 举报

尚未签到

2015-7-9 10:08:03 显示全部楼层
lfqt 发表于 2015-7-9 08:54
具体是哪个,你可以说一下吗?或者例子的名字是什么?谢谢

文档里面搜qthread,里面第一段代码那个例子
回复

使用道具 举报

尚未签到

2015-7-9 11:13:41 显示全部楼层
Joey_Chan 发表于 2015-7-9 10:08
文档里面搜qthread,里面第一段代码那个例子

没看到有关闭的地方呀,麻烦你给我截个图上来,谢谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了