• 3791阅读
  • 4回复

QThread::start: Failed to create thread (设备不识别此命令。) [复制链接]

上一主题 下一主题
离线shixingya
 

只看楼主 倒序阅读 楼主  发表于: 2018-04-29
— 本帖被 shixingya 执行取消置顶操作(2018-09-20) —
QThread::start: Failed to create thread (设备不识别此命令。)
这个问题我还是没有绕过它,被困住3天了,有谁遇到过吗?

我用 moveToThread的方式 将多个任务派发给一个线程数组【有30个线程】,但是程序运行时间久 发现子线程数量居然暴涨到630个, 子线程数量暴涨到630个后报错:QThread::start: Failed to create thread (设备不识别此命令。)

我确定程序中只有30个QThread类对象, 其它的如QEventLoop比较多,
急求各位大神给解决问题的思路。。。  我怀疑QEventLoop 事件循环也会开启自己的子线程, 是这样的吗?
代码 AndyQThreadTest.zip (10 K) 下载次数:9 源码在这里








本人2008年9月至2012年6月在三亚学院学习计算机科学与技术专业四年,2012年6月毕业后至今一直在北京市从事软件开发相关工作。本人的技术栈是C++、熟悉Qt、CEF框架。参与或负责过多款Windows、Linux环境下桌面软件的研发。
参加工作十年来,使用Qt参与开发过一个军工仿真想定建模工具,仿真陆、海、空潜等各兵种的作战平台(包括地面车辆、水面舰艇、固定翼/旋转翼飞机、潜艇等)的运动方式和工作流程,实现陆、海、空、潜立体化协同作战仿真。在国美调研过电商OA办公工具的开发设计、在广联达参与了BIM软件的协作开发、在书生电子独立负责过OFD版式阅读器客户端的开发、在跟谁学使用Qt WebEngine、QGraphics等主导了练习批改工具的开发,在蓝湖基于WebAssembly对标Figma参与开发了一款原型设计工具mastergo,在小米集团技术委员会承担了平台应用研发工作,目前在凌云光从事视觉相关应用平台开发。十多年的软件开发工作,让我在软件工程、程序设计、系统架构方面积累了丰富且宝贵的经验。
有同行的朋友,可以加我微信,一起进步
我叫史星亚 微信: EagleAndy  
加好友时请备注  来自qtcn
我有个Qt交友群,拉您入群
非工作时间 可以电联 18610042411
*********************************************************
另低价出售
→各种软件小程序定制!
→SAP教程,涵盖BI/SD/FICO/HANA等各种模块视频教程,购买教程,拾取金领顾问教程!
→各种考证考研题库,保证考证考研成功上岸!
→抖音快手微博朋友圈各种点赞支持,最快一分钟上万赞!
→挂机打卡,远程叫醒,等各种服务欢迎私信EagleAndy开启!
转发此内容,私信EagleAndy,有定制盲盒寄送!
离线yanwuyue

只看该作者 1楼 发表于: 2018-04-29
贴代码
离线shixingya

只看该作者 2楼 发表于: 2018-04-29
void DataServer::send(CloudRequest &request, CloudResponse &response)
{

    QNetworkRequest oNetRequest;

    oNetRequest.setUrl(QUrl(request.getRequestUrl()));
    if(request.getContentType() == ctJson)
        oNetRequest.setRawHeader("Content-Type", "application/json");
    else if(request.getContentType() == ctXml)
        oNetRequest.setRawHeader("Content-Type", "application/xml");
    else
        oNetRequest.setRawHeader("Content-Type", "application/octet-stream");
    if(!m_token.isEmpty())
    {
        oNetRequest.setRawHeader("Authorization", m_token.toLocal8Bit());
    }
    oNetRequest.setRawHeader("CLIENTVERSION", ("V1"));

    QNetworkAccessManager oNetAccessManager;
    QNetworkReply* oNetReply = NULL;

    switch (request.getRequestMethod())
    {
    case rmPut:
        oNetReply = oNetAccessManager.put(oNetRequest, *request.getRequestData());
        break;
    case rmPost:
        oNetReply = oNetAccessManager.post(oNetRequest, *request.getRequestData());
        break;
    case rmGet:
        oNetReply = oNetAccessManager.get(oNetRequest);
        break;
    case rmDelete:
        oNetReply = oNetAccessManager.deleteResource(oNetRequest);
        break;
    default:
        break;
    }
    if(oNetReply ==nullptr)
    {
        qDebug()<<"send error"<<*request.getRequestData();
        QMessageBox::about(nullptr, "错误",QString("发送请求异常").append(*request.getRequestData()));
        return;
    }

    QEventLoop loop;
    connect(oNetReply, SIGNAL(finished()), &loop, SLOT(quit()));
    int tmpResult =loop.exec();   //系统运行时间久 在此报错 QThread::start: Failed to create thread (设备不识别此命令。
    if(tmpResult !=0)
    {
        qDebug()<<"创建loop失败 失败码"<<tmpResult;
        qDebug()<<"send error"<<*request.getRequestData();;
    }


    //记录httpCode
    int httpsCode = oNetReply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
    response.setHttpCode(httpsCode);

    if(oNetReply->error())
    {
        response.setIsError(true);
        response.setErrorMsg(oNetReply->errorString());
        response.setContent(oNetReply->readAll());
    }
    else
    {
        response.setContent(oNetReply->readAll());
    }
}
本人2008年9月至2012年6月在三亚学院学习计算机科学与技术专业四年,2012年6月毕业后至今一直在北京市从事软件开发相关工作。本人的技术栈是C++、熟悉Qt、CEF框架。参与或负责过多款Windows、Linux环境下桌面软件的研发。
参加工作十年来,使用Qt参与开发过一个军工仿真想定建模工具,仿真陆、海、空潜等各兵种的作战平台(包括地面车辆、水面舰艇、固定翼/旋转翼飞机、潜艇等)的运动方式和工作流程,实现陆、海、空、潜立体化协同作战仿真。在国美调研过电商OA办公工具的开发设计、在广联达参与了BIM软件的协作开发、在书生电子独立负责过OFD版式阅读器客户端的开发、在跟谁学使用Qt WebEngine、QGraphics等主导了练习批改工具的开发,在蓝湖基于WebAssembly对标Figma参与开发了一款原型设计工具mastergo,在小米集团技术委员会承担了平台应用研发工作,目前在凌云光从事视觉相关应用平台开发。十多年的软件开发工作,让我在软件工程、程序设计、系统架构方面积累了丰富且宝贵的经验。
有同行的朋友,可以加我微信,一起进步
我叫史星亚 微信: EagleAndy  
加好友时请备注  来自qtcn
我有个Qt交友群,拉您入群
非工作时间 可以电联 18610042411
*********************************************************
另低价出售
→各种软件小程序定制!
→SAP教程,涵盖BI/SD/FICO/HANA等各种模块视频教程,购买教程,拾取金领顾问教程!
→各种考证考研题库,保证考证考研成功上岸!
→抖音快手微博朋友圈各种点赞支持,最快一分钟上万赞!
→挂机打卡,远程叫醒,等各种服务欢迎私信EagleAndy开启!
转发此内容,私信EagleAndy,有定制盲盒寄送!
离线shixingya

只看该作者 3楼 发表于: 2018-05-02
今天得到一种解决方式 源码在此 异步源码 MulThreadTask.zip (9 K) 下载次数:9 源码


之前源码错误有两点:
一、NetworkMgr本来就是异步的,然而没有使用
二、loop是有自己的循环系统的,也就是说和调用主体处于不同的线程中,既然是不同的线程的,那_reply的变量有可能不一致的
本人2008年9月至2012年6月在三亚学院学习计算机科学与技术专业四年,2012年6月毕业后至今一直在北京市从事软件开发相关工作。本人的技术栈是C++、熟悉Qt、CEF框架。参与或负责过多款Windows、Linux环境下桌面软件的研发。
参加工作十年来,使用Qt参与开发过一个军工仿真想定建模工具,仿真陆、海、空潜等各兵种的作战平台(包括地面车辆、水面舰艇、固定翼/旋转翼飞机、潜艇等)的运动方式和工作流程,实现陆、海、空、潜立体化协同作战仿真。在国美调研过电商OA办公工具的开发设计、在广联达参与了BIM软件的协作开发、在书生电子独立负责过OFD版式阅读器客户端的开发、在跟谁学使用Qt WebEngine、QGraphics等主导了练习批改工具的开发,在蓝湖基于WebAssembly对标Figma参与开发了一款原型设计工具mastergo,在小米集团技术委员会承担了平台应用研发工作,目前在凌云光从事视觉相关应用平台开发。十多年的软件开发工作,让我在软件工程、程序设计、系统架构方面积累了丰富且宝贵的经验。
有同行的朋友,可以加我微信,一起进步
我叫史星亚 微信: EagleAndy  
加好友时请备注  来自qtcn
我有个Qt交友群,拉您入群
非工作时间 可以电联 18610042411
*********************************************************
另低价出售
→各种软件小程序定制!
→SAP教程,涵盖BI/SD/FICO/HANA等各种模块视频教程,购买教程,拾取金领顾问教程!
→各种考证考研题库,保证考证考研成功上岸!
→抖音快手微博朋友圈各种点赞支持,最快一分钟上万赞!
→挂机打卡,远程叫醒,等各种服务欢迎私信EagleAndy开启!
转发此内容,私信EagleAndy,有定制盲盒寄送!
离线shixingya

只看该作者 4楼 发表于: 2018-05-03
找到一个最简单的修改方式

1. 将QNetworkAccessManager *accessManager = new QNetworkAccessManager(/*this*/);
改为  
static QNetworkAccessManager *accessManager = new QNetworkAccessManager(/*this*/);

2. 将QEventLoop 替换为
  
while(_reply->isReadable()==false)          
{                                          
      QCoreApplication::processEvents();    
}                                          



问题解决了,但本人还是有以下两个疑问,希望大家给与解答

1是: 为什么QEventLoop不可以
2是: 为什么QNetworkReply的waitForReadyRead函数不可以
本人2008年9月至2012年6月在三亚学院学习计算机科学与技术专业四年,2012年6月毕业后至今一直在北京市从事软件开发相关工作。本人的技术栈是C++、熟悉Qt、CEF框架。参与或负责过多款Windows、Linux环境下桌面软件的研发。
参加工作十年来,使用Qt参与开发过一个军工仿真想定建模工具,仿真陆、海、空潜等各兵种的作战平台(包括地面车辆、水面舰艇、固定翼/旋转翼飞机、潜艇等)的运动方式和工作流程,实现陆、海、空、潜立体化协同作战仿真。在国美调研过电商OA办公工具的开发设计、在广联达参与了BIM软件的协作开发、在书生电子独立负责过OFD版式阅读器客户端的开发、在跟谁学使用Qt WebEngine、QGraphics等主导了练习批改工具的开发,在蓝湖基于WebAssembly对标Figma参与开发了一款原型设计工具mastergo,在小米集团技术委员会承担了平台应用研发工作,目前在凌云光从事视觉相关应用平台开发。十多年的软件开发工作,让我在软件工程、程序设计、系统架构方面积累了丰富且宝贵的经验。
有同行的朋友,可以加我微信,一起进步
我叫史星亚 微信: EagleAndy  
加好友时请备注  来自qtcn
我有个Qt交友群,拉您入群
非工作时间 可以电联 18610042411
*********************************************************
另低价出售
→各种软件小程序定制!
→SAP教程,涵盖BI/SD/FICO/HANA等各种模块视频教程,购买教程,拾取金领顾问教程!
→各种考证考研题库,保证考证考研成功上岸!
→抖音快手微博朋友圈各种点赞支持,最快一分钟上万赞!
→挂机打卡,远程叫醒,等各种服务欢迎私信EagleAndy开启!
转发此内容,私信EagleAndy,有定制盲盒寄送!
快速回复
限100 字节
 
上一个 下一个