您的位置:首页 > 其它

-用哪个创建线程CreateThread还是_beginthread

2011-08-26 13:27 435 查看
用哪个创建线程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)))
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐