21,479
社区成员
发帖
与我相关
我的任务
分享
void MyTcpServer::ReceiveData()
{
/*收取报文后创建一个线程执行任务*/
QThread * pNewThread = new QThread(); //线程对象
TcpService * pNewService = new TcpService(); //逻辑处理对象
/*Tcp服务器连接 Tcp逻辑处理(通知需要处理)*/
connect(this,SIGNAL(ServiceStart(QByteArray,unsigned int)),pNewService,SLOT(ServiceStart(QByteArray,unsigned int)),Qt::QueuedConnection);
/*Tcp逻辑处理连接Tcp服务器 (通知处理完毕). */
connect(pNewService,SIGNAL(ServiceFinsh(QByteArray,unsigned int)),this,SLOT(ServiceFinsh(QByteArray,unsigned int)),Qt::QueuedConnection);
/*线程完结 释放业务逻辑对象,这两行是否有区别??*/
QObject::connect(pNewThread, &QThread::finished, pNewService, &QObject::deleteLater,Qt::QueuedConnection);
//QObject::connect(pNewThread, &QThread::finished, pNewService, SLOT(pNewService->deleteLater()),Qt::QueuedConnection);
/*线程完结 释放线程本身对象*/
QObject::connect(pNewThread, &QThread::finished, pNewThread, &QObject::deleteLater,Qt::QueuedConnection);
/*不调用没有发现影响??*/
// QObject::connect(pNewThread, &QThread::finished, pNewThread, &QThread::quit,Qt::QueuedConnection);
// QObject::connect(pNewThread, &QThread::finished, pNewThread, &QThread::exit,Qt::QueuedConnection);
/*移到多线程工作*/
pNewService->moveToThread(pNewThread);
/*开始*/
pNewThread->start();
/*Tcp服务器发送信号给Tcp逻辑处理*/
emit(ServiceStart(Fmt,Fmt.size()));
return;
}/*线程完结 释放业务逻辑对象,这两行是否有区别??*/
QObject::connect(pNewThread, &QThread::finished, pNewService, &QObject::deleteLater,Qt::QueuedConnection);
//QObject::connect(pNewThread, &QThread::finished, pNewService, SLOT(pNewService->deleteLater()),Qt::QueuedConnection); /*线程完结 释放线程本身对象*/
QObject::connect(pNewThread, &QThread::finished, pNewThread, &QObject::deleteLater,Qt::QueuedConnection);
/*不调用没有发现影响??*/
// QObject::connect(pNewThread, &QThread::finished, pNewThread, &QThread::quit,Qt::QueuedConnection);
你说的这些东西我都看过用过了,是我理解不透彻转换不到QT上吗[/quote]
看过、用过并不代表已经理解了。
如果真正理解透彻,QT学个两周,就能明白你上面的问题。
你说的这些东西我都看过用过了,是我理解不透彻转换不到QT上吗
楼主可以先去学下windows 程序设计知识,尤其是多线程,多线程同步这些。
1、多线程
2、临界区
3、信号量
4、event事件
5、win32回调过程
6、消息循环和消息队列
7、线程的安全退出