QThread的一点理解

白天在工作中用到的QThread,发现了一些问题,晚上学习了一下,感触颇深,遂记录一下~嘻嘻

 

1、QThread::exec()如果不在run()中最后一行写出来,普通信号槽可以用,但是QTimer或QTcpsocket或进程类QProcess的信号槽不能用!

2、在头文件里定义的类,是属于主线程的。比如QTimer,在run()中如果调用start();会提示不在同一线程的警告。避免这种情况应该把头文件里的类声明为指针,或者在run()中栈上定义。

3、线程间通信不得不提到connect,最后一个参数可以分3类,自动连接(Auto Connection),直接连接(Direct Connection),队列连接(Queued Connection),解释一下:自动连接,这是默认设置,如果发送者和接收者处于同一线程,则等同于直接连接,如果发送者和接受者位于不同线程,则等同于队列连接。直接连接,当信号发射时,槽函数将直接被调用。无论槽函数所属对象在哪个线程,槽函数都在发射者所在线程执行。队列连接,当控制权回到接受者所在线程的事件循环式,槽函数被调用。槽函数在接收者所在线程执行。在QThread中的slot是属于主线程的,使用时和run()一样,注意线程同步!

4、关闭线程,先exit();后wait();避免使用terminate ();先写到这~今天对编程的认识提高了一些,原来遇到问题都是绕着走,这是不对的!迎难而上,多想多问才会提高,才会对代码有更深刻的理解和认识!

http://mobile.51cto.com/symbian-268690.htm

 

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值