这个错误通常在使用Qt框架中的QSocketNotifier类时出现。它表明你试图从一个线程中启用或禁用来自另一个线程的套接字通知器。
在Qt中,QSocketNotifier旨在与一个特定的事件循环(通常是主线程的事件循环)关联。如果你尝试在不同的线程中操作同一个QSocketNotifier对象,就会引发这个错误。列如将代码写成如下:
SendThread *sendThread = new SendThread();
RecvThread *recvThread = new RecvThread();
recvThread->start();
sendThread->start();
程序就会闪退,造成程序异常退出,要解决这个问题,确保所有对QSocketNotifier的操作都在创建它的线程中进行将代码改为如下:
SendThread *sendThread = new SendThread(this);
RecvThread *recvThread = new RecvThread(this);
recvThread->start();
sendThread->start();
程序运行正常。如果你需要在其他线程中操作套接字通知器,可以考虑使用Qt的信号和槽机制将操作传递给创建QSocketNotifier的线程,然后在该线程中执行相应的操作。