项目场景:
项目需求是通过UDP与服务器通讯。其中客户端有一个功能模块,进入该模块运行时需要监听端口,停止运行或退出时应停止监听。使用了一个监听线程去管理接受数据。服务器是纯C++代码,因此采用了Winsock。客户端基于Qt库,但为保持一致性,也是用Winsock进行通讯。
问题描述:
监听线程继承于QThread,实现了挂起、恢复、终止等服务,代码类似于:
void UDPThread::stop()
{
if (QThread::isRunning())
{
// qDebug() << "stop thread : " << QThread::currentThreadId();
mutex.lock();
stopFlag = true;
condition.wakeAll();
mutex.unlock();
}
}
void UDPThread::pause()
{
if (QThread::isRunning())
{
// qDebug() << "pause thread : " << QThread::currentThreadId();
mutex.lock();
pauseFlag