首页 文章

从多个线程访问QTcpSocket

提问于
浏览
0

我正在修改一个用Qt编写的大型项目,它会在某些请求到来时生成qthreads . 这些线程中的每一个都编写一个QTcpSocket,它在主线程中创建并连接到服务器 .

线程类具有对QTcpSocket的引用 . 当需要写入它时,套接字写入数据并调用waitForBytesWritten然后返回 .

然后线程等待一个条件,直到从套接字发出readyRead信号 .

使用互斥锁保护套接字上的访问权限 .

对我来说问题是我看到很多“QSocketNotifier:套接字通知程序无法启用或禁用其他线程”警告 . 这是因为我正在从另一个线程写入套接字(套接字已在主线程中创建) .

我知道最好的解决方案应该是使用信号和插槽进行写入和读取,但不幸的是项目非常复杂,我没有时间来改变这种行为 .

我能做什么?

1 回答

  • 1

    您可以更改QTcpSocket实例的thread affinity以禁止警告 .

    但这真的不是正确的方法,你最好使用信号/插槽 .

相关问题