A thread that uses functions from the C run-time libraries should use the _beginthread and _endthread C run-time functions for thread management rather than CreateThread and ExitThread是不是真的,我在MSDN中找不到类似的说明啊。

解决方案 »

  1.   

    也不见的,比如你用CreateThread创建的的线程并不调用C库的函数,或者不调用那些使用静态变量的函数,_beginthread内部只是通过线程本地存储,为每个线程准备了一些这些静态变量的副本,当然退出线程时需要_endthread 释放这些副本咱用的内存
      

  2.   

    请问哪些C运行库函数需要使用静态变量?我只用了个memcpy函数。
      

  3.   

    具体参见MSDN文档
    ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.2052/vccore/html/_core_C_Run.2d.Time_Library_Functions_for_Thread_Control.htm
    _beginthread 函数与 Win32 API 中的 CreateThread 函数类似,但有如下差异: 
    1、_beginthread 函数使您可以将多个参数传递到线程。 
    2、_beginthread 函数初始化某些 C 运行时库变量。只有在线程中使用 C 运行时库时,这一点才很重要。 
    3、CreateThread 对安全属性提供控制。可以使用此函数启动处于挂起状态的线程。 
    =================================================
     当你幸福的时候,切勿丧失使你成为幸福的德行。——莫罗阿
     CSDN助手 签名走马灯
      

  4.   

    _beginthread是简单版本,没有特殊要求的话,有使用简便的优点,_beginthreadex的参数和CreateThread的参数在意义上是一样的,之所以变量名和类型不一样是因为_beginthreadex的设计小组认为该运行库不应该依赖任何windows数据类型和定义,jeffrey在《windows核心编程》里已经说的很明确的了