threadobject已经析构,thread.isrunning 是false,thread.isfinishing() 也是true,说明thread退出了,但是qtcreator调试窗口中还是可见Qthread状态竟然是正在运行,什么鬼, 特此记录下这个现象。待解。
记录:sockect只能在同一个线程对象中使用.在同一个线程创建的变量也只能在当前线程使用。在实际运用中,切记不可跨线程去使用其他线程里面的变量等。若业务需求必须要使用其他线程的数据,可通过信号槽 将该数据emit出去,由其他线程接收再进行使用。
//重写QTcpServer中的incomingConnection函数,当监听到有连接时,会调用此函数
void MyServer::incomingConnection(qintptr socketDescriptor)
{
qDebug() << "主线程id:" << QThread::currentThread();
Thread1 *thread = NULL;
QMap<int, Thread1*>::iterator iter = m_mapThread.find(socketDescriptor);
if(iter != m_mapThread.end())
thread = iter.value();
else
{
thread = new Thread1(socketDescriptor);
m_mapThread[socketDescriptor] = thread;
}
//connect(thread,SIGNAL(finished()),thread,SLOT(deleteLater()));//删除thread对象
thread->start();
}
th