Qt子线程内waitForReadyRead的问题

想学坏的小孩 2025-01-10 09:34:22

在子线程内waitForReadyRead(-1) 等待数据 想主动关闭这个线程应该用什么办法?

QTcpsocket对象是在子线程内创建的 只能在这个线程内去close 或者abort 但实际上它会一直卡在waitForReadyRead这里线程内根本没法去掉用这个对象 线程外调用又会报错跨线程操作socket 

试过在主线程发信号给子线程(在主线发送信号连接子线程的信号 子线程的信号连接lambda函数) 结果也是等到子线程函数执行完了才会去执行这个lambda函数 但是又回到waitForReadyRead这里卡着是不会到函数尾部的

试过关闭tcpserver对象 也不行

还有啥办法可以在别的线程去主动关闭这个socket 或者让代码在子线程中运行

...全文
50 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
mideum 9天前
  • 打赏
  • 举报
回复

那就不要无限等待,传个timeout时间,外面再套一个循环,然后加个布尔变量可以从外部设置的,每次timeout了判断一下要不要继续wait

赵4老师 9天前
  • 打赏
  • 举报
回复

参考
Qt\6.4.0\Src\qtbase\src\network\socket\qlocalsocket_tcp.cpp

16,729

社区成员

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

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