请教关于线程的问题

bluegem218 2014-05-17 11:12:37

void FortuneServer::incomingConnection(qintptr socketDescriptor)
{
QString fortune = fortunes.at(qrand() % fortunes.size());
FortuneThread *thread = new FortuneThread(socketDescriptor, fortune, this);
connect(thread, SIGNAL(finished()), thread, SLOT(deleteLater()));
thread->start();
}

如上代码中,线程指针thread,在new FortuneThread之后,是不是不需要用delete thread来删除?它运行完后,会自动删除掉或者回收?
...全文
152 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
柳11 2014-05-23
  • 打赏
  • 举报
回复
定时器,每隔5s扫一下
柳11 2014-05-23
  • 打赏
  • 举报
回复
开个一个线程,一个定时器,定时器没5s扫一下的!。。。。
「已注销」 2014-05-17
  • 打赏
  • 举报
回复
线程结束线程对象是不会释放的,开一个线程没5秒扫一次不就好了,为什么每5秒启动一个线程.
bluegem218 2014-05-17
  • 打赏
  • 举报
回复
引用 1 楼 wx7864566 的回复:
所有从QObject中继承的类,在构造时指定其父对象,当父对象删除后,会自动删除其下面子对象,所以FortuneThread 对象会在this析构的时候,被删除掉.
如果this是主窗口指针,同时,又需要定时地开启一个QThread对象,在一个线程里做任务,那是不是在每次线程任务昨晚后,也会自动删除对应线程指针呢? 比如我写了这样的代码: CAutoScanThread* pThread = new CAutoScanThread(this); // CAutoScanThread类是一个扫描文件夹里是否有最新文件类,如果有则打开文件运行任务,这个扫描动作会5秒做一次,this是主窗口指针。 QObject::connect(pThread, SIGNAL(SendStatus(int,QString)), this, SLOT(ReiciveThreadStatus(int,QString))); // 线程通讯; pThread->start(); // 线程开始运行; 这样,当定时器触发后,运行一次上面的代码,会不会造成任务运行完后,指针没有被回收呢? 谢谢!
「已注销」 2014-05-17
  • 打赏
  • 举报
回复
所有从QObject中继承的类,在构造时指定其父对象,当父对象删除后,会自动删除其下面子对象,所以FortuneThread 对象会在this析构的时候,被删除掉.
bluegem218 2014-05-17
  • 打赏
  • 举报
回复
引用 3 楼 wx7864566 的回复:
线程结束线程对象是不会释放的,开一个线程没5秒扫一次不就好了,为什么每5秒启动一个线程.
你意思是,线程里开定时器 比 在主线程中用定时器来开启线程更好?

16,235

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧