qt- thread —— 关于槽函数所在线程的问题
来源:互联网 发布:建行网络学系统网址 编辑:程序博客网 时间:2024/05/22 15:27
背景: 利用线程,串行发送4个http请求并接受数据
子类化QThread得到downlaodThread ,利用downloadThread进行网络通信。
downThread结构:在run函数中发送http get请求,将finished()信号与槽函数httpFinished()相连。 同时开启事件循环。
部分代码:
qnam=new QNetworkAccessManager();
connect(qnam,SIGNAL(finished(QNetworkReply*)),this,SLOT(httpFinished(QNetworkReply*)));
downloadFile();
this->exec();
httpFinished为downloadThread的成员,处理收到的数据并利用quit()结束当前线程。
主线程中的代码如下
for(int x=0;x<2;x++)
for(int y=0;y<2;y++)
{
downlaodThread *th=new downlaodThread(“***************"));
th->start();
th->wait();
}
发生的问题:程序死锁。
原因:即使httpFinished在QThread中声明,但是它所属的类QThread依附于主线程,因此调用该槽函数需要在主线程内执行。
而主线程被th->wait挂起,因此发生如下逻辑: 主线程等待工作线程结束后wake up,而工作线程需要在主线程的槽函数中结束自身。因此死锁
重点:QThread的成员函数(run除外)的代码在主线程中执行。
思路来源 http://blog.csdn.net/lynfam/article/details/7081757
- qt- thread —— 关于槽函数所在线程的问题
- 关于窗口Qt线程停止的问题
- pthread线程的加锁问题——thread locking problems
- 关于线程Thread的学习
- 关于SDK回调Qt函数的问题
- 线程——Thread
- 线程——Thread
- 线程——Thread
- 关于qt的问题构造函数的问题
- 修补bug之路——关于线程执行函数全局的问题
- php中关于线程thread的使用
- 关于线程(Thread)的几个问题
- 关于qt的线程结束
- 线程(1)----Thread的方法函数
- Thread 关于线程
- thread——MFC下Boost的线程编译错误问题
- boost::thread 使用函数对象来构造线程对象的问题
- 性能特性测试系列3——QT线程与std::thread(上)之std::thread
- 《大话数据结构》第9章 排序 9.10 总结回顾
- GP中数据管理
- 一个学生的信息是:姓名,学号,性别,年龄等信息,用一个链表,把这些学生信息连在一起, 给出一个age, 在些链表中删除学生年龄等于age的学生信息
- 《大话数据结构》简体中文版勘误
- leetcode | Power of Two
- qt- thread —— 关于槽函数所在线程的问题
- OC学完总结(2015.7.21更新类的扩展)
- 安卓客户端请求网页信息,返回的中文是乱码
- 《大话数据结构》样章试读
- append_only表相关
- 【CODEFORCES】 C. Kamal-ol-molk's Painting
- 仿照iPhone实现电话,邮件,短信,博客功能
- 微信公众服务号申请、认证(开通支付)-微信开发图文教程
- html总结