首页| 论坛| 消息

标题:QThread 创建100个线程就可以,创建1000个就提示QThread::start: Failed to create thread
作者:wangjiaooo
日期:2016-07-05 14:36
内容:

这个问题困扰好几天了,请大牛们来看看。我先贴代码
按钮触发的槽:
void Amax_Test::testByStressSlot()
{
SendRequestByParallel_Dialog srbp;
Thread *pthread = NULL;
if(srbp.exec() == QDialog::Accepted)
{
int numThread = srbp.numThread;//线程数
int numRequest = srbp.ui->numRequestByThreadSpinBox->value();//每个线程发送请求数
pthread = new Thread;
for(int i = 0 ; i < numThread ; ++i )
{
pthread.set(numRequest); //创建线程
pthread.start();//线程开始
}
for(int i = 0 ; i < numThread ; ++i )
{
pthread.wait(); //等待所有线程执行完成
}
}
else
{
//点击取消需要处理情况
goto exit;
}
exit:
if(pthread != NULL)
{
delete[] pthread;
pthread = NULL;
}
}

自己定义的Thread继承Qthread类。
#include "Thread.h"
#include "Amax_Test.h& ..


#1 [wangjiaooo 07-05 14:37]
万分感谢。为什么创建1000个线程就不行呢?为什么100个就可以呢
#2 [sevencat 07-05 14:53]
void QThread::setStackSize(uint stackSize);
这里用64K 64*1024再试试创建2000个线程。
#3 回 sevencat 的帖子 [wangjiaooo 07-05 15:11]
sevencat:void QThread::setStackSize(uint stackSize);
这里用64K 64*1024再试试创建2000个线程。(2016-07-05 14:53)
好的,我先试试,我也是第一次用QThread结合get提交。
#4 回 sevencat 的帖子 [wangjiaooo 07-05 15:26]
sevencat:void QThread::setStackSize(uint stackSize);
这里用64K 64*1024再试试创建2000个线程。(2016-07-05 14:53)
我在run函数中只是写qDebug()
#5 [sevencat 07-05 16:05]
1、试着使用64位
2、把stacksize慢慢加,128K,256K 512K...直到运行没问题。

<< 1 2 >> (1/2)

回复 发表
主题 版块