上一篇文章讲解了实现思路,最终选中使用线程池的方式解决,这篇文章主要讲解如何使用该方式进行具体实现。
功能实现
开发环境:win10 VS2017 + Qt5.14.2
1:实现监听线程
每进行一次操作都需要从当前操作开始计时,当时间超过设定时间5分钟后,监听线程发出消息通知使用者,已经超时了。
主要的实现技术采用线程池方式:QThreadPool
1.1:自定义线程类
继承类名称:QListeningActiveThread,继承自QRunnable
添加头文件
#include <QThreadPool>
继承的简单框架,如下所示:
class QListeningActiveThread : public QObject, public QRunnable
{
Q_OBJECT
public:
QListeningActiveThread();
~QListeningActiveThread();
private:
void run();
};
一般情况下,线程的处理是在run函数中处理。
1.2:run函数处理思想
当启动线程时,run函数就开始工作了。
核心思路:run需要启动一个while循环,一直在判断是否超时,每当有新的操作时,需要更新最新激活时间,当时间差超过设定时间时,发送消息通知外部使用者。