【线程同步系列6】一个基于VC封装的多线程类CMyThread(类似QT中的QThread类的run方法)

QThread
QThread 是 Qt 框架中用于多线程编程的核心类。它提供了一个与平台无关的方式来管理线程。使用线程可以让你在不阻塞用户界面的情况下运行耗时操作,从而保持应用程序的响应性。
通过继承 QThread 类并重写其 run() 方法来实现。
工作原理:run() 方法就是新线程的入口函数,类似于标准库中的 std::thread。当调用 start() 方法时,run() 方法会在新线程中执行。
缺点:
run() 方法默认调用 exec() 来启动一个局部的事件循环,但如果你重写了 run(),就失去了这个事件循环,导致无法在该线程中使用信号槽(需要手动调用 exec())。
违反了面向对象的设计原则:QThread 应该代表“线程”这个实体,而不是“任务”。
CMyThread封装思路
在VC中,提供了多线程的使用函数AfxBeginThread,本篇文章基于这个函数进行了封装,实现了类似QThread中重写run方法的功能,这种封装虽然实现了对线程的管理。
优点是当每个任务需要开启一个线程时,这种封装非常适配。
当然也有明显的缺点,那就是一个线程中只能执行一种任务,而无法实现像QT中Worker Object + MoveToThread
