我会看情况来使用CreateThread或_beginthread

用哪个创建线程CreateThread还是_beginthread也许很多人说,这还用说,用_beginthread啊。很多人都这样说,很多书也这样写。不过我觉得还是得具体问题具体分析。

 

我会看情况来使用CreateThread_beginthread

 

如果我不使用那几个CRT函数的话。我会用CreateThread来创建我的线程。

理由:

1.        
_beginthreadex函数只存在于C/C + +运行期库的多线程版本中。

2.        
调用CreateThread 更简单一些,不像_beginthreadex要对参数做一些转换。

HANDLE hThead = (HANDLE)_beginthreadex(NULL,
0, (PTHREAD_START)Thead,
NULL, 0, (unsigned*)&dwTheadID);
   

3.        
更直接一些,_beginthreadex最后也是调用CreateThread的。

4.        
_beginthreadex为分配tiddata带来的开销。(虽然这开销很小)

 

如果要用那几个CRT函数,不得不用_beginthreadex,我们可以为它定义一个宏。使用起方便一些。

#define BEGINTHREADEX(psa,
cbStack, pfnStartAddr,
   \

   pvParam, fdwCreate,
pdwThreadId)                
 \

     
((HANDLE)_beginthreadex(                     
 \

        
(void *)        (psa),                    
 \

        
(unsigned)      (cbStack),        
         \

        
(PTHREAD_START) (pfnStartAddr),           
 \

        
(void *)        (pvParam),               
  \

        
(unsigned)      (fdwCreate),              
 \

        
(unsigned *)    (pdwThreadId)))

本文地址:http://www.cnblogs.com/fangyukuan/archive/2010/09/02/1816196.html

 

版权声明:本文为fangyukuan原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/fangyukuan/archive/2010/09/02/1816196.html