zoukankan      html  css  js  c++  java
  • CreateThread和_beginthread区别及使用

    CreateThread 是一个Win 32API 函数,

    _beginthread 是一个CRT(C Run-Time)函数,

    他们都是实现多线城的创建的函数,而且他们拥有相同的使用方法,相同的参数列表。

     

     

    CreateThread()和_beginthreadex()在Jeffrey的《Windows核心编程》中讲的很清楚,应当尽量避免使用CreateThread()。 

    事实上,_beginthreadex()在内部先为线程创建一个线程特有的tiddata结构,然后调用CreateThread()。在某些非线程安全的CRT函数中会请求这个结构。如果直接使用CreateThread()的话,那些函数发现请求的tiddata为NULL,就会在现场为该线程创建该结构,此后调用EndThread()时会引起内存泄漏。_endthreadex()可以释放由CreateThread()创建的线程,实际上,在它的内部会先释放由_beginthreadex()创建的tiddata结构,然后调用EndThread()。 

    因此,应当使用_beginthreadex()和_endthreadex(),而避免使用CreateThread()和EndThread()。当然,_beginthread()和_endthread()也是应当避免使用的。 

     

     

    避免使用_beginthread!

    _beginthread函数在调用ExitThread之前,会调用CloseHandle,如果此时之后代码调用CloseHandle()则会失败,而_beginthreadex()不会关闭句柄,故而应当用_beginthreadex()。

     

  • 相关阅读:
    搜索相关
    隐藏search box
    SharePoint提供的一些javascript函数
    asp.net in sharepoint
    workflow 的一点讨论
    漂亮的网站
    SwitchPartManager:在UpdatePanel中灵活地切换不同用户控件
    Serializable of an XPO Object
    树形数据的处理
    CSS中的expression
  • 原文地址:https://www.cnblogs.com/lsh123/p/7413611.html
Copyright © 2011-2022 走看看