关于CWinThread的工作方式,每次我调用ResumeThread()时入口点在哪里,我有一个非常简单的问题。我正在寻找一个看起来类似于“主要”功能的条目,在其中可以执行一些操作和分支。

我也想知道如何在任何时候终止或终止来自不同线程的运行线程。我应该在哪里放置AfxEndThread()?还是直接调用pThread-> ExitInstance()?

我的最后一个问题是,如果要创建多个线程,如何使用 vector 在标准模板库(STL)中组织它们?

谢谢。

最佳答案

CWinThread派生的类的主要入口点是虚拟Run()函数。但是,还有一个事先被称为InitInstance()的函数,以及后来被称为ExitInstance()的函数。

您永远不要自己调用ExitInstance()。相反,请调用AfxEndThread,或仅从Run()返回。

如果您确实想将线程放入std::vector<>中,请使用指针,因为该类不可复制,并且在线程退出时,MFC会自动删除该实例。

编辑:正如David指出的,您通常不希望在应用程序代码中使用SuspendThreadResumeThread。如果您使用的是MFC,请使用AfxBeginThread启动线程。

08-26 01:37