【发布时间】:2021-07-17 11:40:06
【问题描述】:
当我重新实现 QTcpserver::incomingConnection() 时,会创建一个新的 QThread 和一个新的 QTcpsocket。accept-fd 被传递给 QTcpsocket。但是,整个过程意外退出时会出现警告: QThread:在线程仍在运行时被销毁 当 Qthread 调用 quit() 时,这两个对象将被删除。这是下面的代码。
void TcpServer::incomingConnection(qintptr handle)
{
QThread* tcpThread = new QThread;
TcpSocket* tcpSocket = new TcpSocket;
tcpSocket->setSocketDescriptor(handle);
tcpSocket->moveToThread(tcpThread);
connect(tcpSocket,&TcpSocket::sigRecvFinish, [=](){
tcpThread->quit();
delete tcpSocket;
delete tcpThread;
});
tcpThread->start();
}
如何退出线程并正确释放资源?同时,是什么导致了这个问题? 如果您能帮助我解决这个问题,我将不胜感激。
【问题讨论】:
标签: c++ qt sockets thread-safety