AfxBeginThread和CreateThread详细差异itjob - 亚美娱乐

AfxBeginThread和CreateThread详细差异itjob

2019-02-13 07:28:08 | 作者: 昊明 | 标签: 函数,运用,线程 | 浏览: 3888

具体说来,CreateThread这个 函数是windows供给给用户的 API函数,是SDK的规范方式,在运用的过程中要考虑到进程的同步与互斥的联系,进程间的同步互斥等一系列会导致操作系统死锁的要素,用起来比较繁琐一些,初学的人在用到的时分或许会发生不行意料的过错,主张多运用AfxBeginThread,是编译器对本来的CreateThread函数的封装,用与MFC编程(当然,只需修改了项目特点,console和win32项目都能调用)而_beginthread是C的运转库函数。

在运用AfxBeginThread时,线程函数的界说为:UINT _yourThreadFun(LPVOID pParam)参数有必要如此

在运用CreateThread时,线程的函数界说为: DWORD WINAPI _yourThreadFun(LPVOID pParameter)。

两个的本质都是相同的,不过AfxBeginThread回来一个CWinThread的指针,就是说他会new一个CWinThread目标,并且这个目标是主动删去的(在线程 nobr id="key8" 运转 /nobr 结束时),给咱们带来的不便利就是无法取得它的状况,由于随时都有或许这个指针指向的是一个现已无效的 nobr id="key7" 内存 /nobr 区域,所以运用时(假如需求了解它的运转状况的话)首要CREATE_SUSPENDED让他挂起,然后m_bAutoDelete=FALSE,接着才ResumeThread,最终不要了delete那个指针。 CreatThread就便利多了,它回来的是一个句柄,假如你不运用CloseHandle的话就可以经过他 nobr id="key1" 安全 /nobr 的了解线程状况,最终不要的时分CloseHandle,Windows才会开释资源,所以我一般运用CreatThread, nobr id="key2" 便利 /nobr 。

假如用MFC编程,不要用CreateThread,假如仅仅运用Runtime Library,用_BegingThread,总归,不要容易运用CreateThread。这是由于在MFC和RTL中的函数有或许会用到些它们所封装的共用变量,也就是说AfxBeginThread和_BeginThread都有自己的发动代码是CreateThread所没有的。在用CreateThread所创立的线程中运用MFC的类和RTL函数就有或许出现问题。假如你是用汇编编写win32程序并且在线程函数中也不调用MFC和RTL的函数,那用CreateThread就没问题,或许你虽然是用C写线程函数,但你很当心没调用RTL函数也不会有问题。

CreateThread是由操作系统供给的接口,而AfxBeginThread和_BeginThread则是编译器对它的封装。

在或许的状况下,不要调用_beginthread,而应该调用_beginthreadex。以及对应的_endthreadex。这都是C++运转期函数。可是运用_beginthread,无法创立带有安全特点的新线程,无法创立暂停的线程,也无法取得线程ID,_endthread的状况相似,它不带参数,


这意味这线程的退出代码有必要硬编码为0。这两个函数在_beginthreadex和_endthreadex中进行调用。CreateThread不要进行直接调用。

写的有点乱,呵呵

 

转载自:https://www.cppblog.com/totti1006/archive/2007/10/18/34539.html

版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表亚美娱乐立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章

阅读排行

  • 1

    PHP源码加密sohu

    加密,文件,目录
  • 2
  • 3
  • 4

    最大接连子数组之和alibaba

    数组,时分,元素
  • 5

    python规范库学习系列1环球

    目标,函数,元素
  • 6
  • 7

    JDBC 的三个Wmingxing

    进程,目标,办法
  • 8
  • 9

    JAVA根底 之 GUIITeyefenghuang

    组件,按钮,文本框
  • 10

    JAVA根底 之 MathITeyesina

    职业,软件,计算机