对比MFC下的三种多线程开发。
1、C语言函数,调用_beginthread();
2、API函数,调用CreateThread();操作系统提供的接口
3、MFC函数,调用AfxBeginThread();
若在MFC下编程,推荐使用AfxBeginThread();方面创建线程、线程等待、线程唤醒等操作。
CWinThread* MyThread = AfxBeginThread(MyThreadFunction,pParam, THREAD_PRIORITY_NOMAL,0,0,NULL);
让线程等待:MyThread-.>SuspendThread();
唤醒暂停的线程:MyThread->ResumeThread();
AfxEndThread();释放线程资源,但一般不需要用户使用,当线程自然退出后,MFC会自动释放资源。
查看线程状态:
DWORD code; GetExitCodeThread(MyThread->m_hThread,&code); code == STLL_ACTIVE执行状态;否则是暂停状态。
_beginthread()和AfxBeginThread()的底层都调用了CreateThread函数。
CreateThread函数没有考虑下面两点:
1、C Runtime中需要对多线程进行记录和初始化,以保证C函数库正常工作。
2、MFC也需要知道新进程的创建,也需要做一些初始化工作。
所以,在不调用MFC和CRT函数时,可以用CreateThread创建线程,其它情况不要使用。