关于CWinThread的工作方式,每次我调用ResumeThread()时入口点在哪里,我有一个非常简单的问题。我正在寻找一个看起来类似于“主要”功能的条目,在其中可以执行一些操作和分支。
我也想知道如何在任何时候终止或终止来自不同线程的运行线程。我应该在哪里放置AfxEndThread()?还是直接调用pThread-> ExitInstance()?
我的最后一个问题是,如果要创建多个线程,如何使用 vector 在标准模板库(STL)中组织它们?
谢谢。
最佳答案
从CWinThread
派生的类的主要入口点是虚拟Run()
函数。但是,还有一个事先被称为InitInstance()
的函数,以及后来被称为ExitInstance()
的函数。
您永远不要自己调用ExitInstance()
。相反,请调用AfxEndThread
,或仅从Run()
返回。
如果您确实想将线程放入std::vector<>
中,请使用指针,因为该类不可复制,并且在线程退出时,MFC会自动删除该实例。
编辑:正如David指出的,您通常不希望在应用程序代码中使用SuspendThread
和ResumeThread
。如果您使用的是MFC,请使用AfxBeginThread
启动线程。