Multithreading 从其他线程写入QTcpSocket

Multithreading 从其他线程写入QTcpSocket,multithreading,qt,sockets,send,Multithreading,Qt,Sockets,Send,我目前在游戏中遇到了一个问题,我正在使用Qt编写这个问题。我有这个QTcpSocket与游戏服务器通信,还有一些AI在另一个线程中运行 问题是,当我想从AI线程向服务器发送一些数据时,我得到以下错误: QSocketNotifier:无法从其他线程启用或禁用套接字通知程序 有没有办法解决这个问题?从AI发出信号,在另一个线程中捕获此信号并写入所有需要的内容。您应该只从它所在的线程访问QTcpSocket。如果你想从另一个线程读/写,你需要使用信号/插槽。在Qt中使用信号和插槽进行线程间的通信。这

我目前在游戏中遇到了一个问题,我正在使用Qt编写这个问题。我有这个QTcpSocket与游戏服务器通信,还有一些AI在另一个线程中运行

问题是,当我想从AI线程向服务器发送一些数据时,我得到以下错误:

QSocketNotifier:无法从其他线程启用或禁用套接字通知程序


有没有办法解决这个问题?

从AI发出信号,在另一个线程中捕获此信号并写入所有需要的内容。您应该只从它所在的线程访问
QTcpSocket
。如果你想从另一个线程读/写,你需要使用信号/插槽。在Qt中使用信号和插槽进行线程间的通信。这看起来是个好主意,但这不会在我的QtcSocket中创建对我的AI的依赖性吗?(我的意思是,我需要在连接中引用我的AI对象)@Phito不一定。如果您在处理TCP连接的模块中所做的只是发送信号,那么您就不需要对AI模块的引用。连接将在AI模块中创建,处理TCP套接字的模块将只发送信号,并因此在AI模块的事件循环中发布事件。