您的位置:首页 > 其它

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

2010-09-02 16:50 519 查看
用哪个创建线程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)))

本文地址:/article/5259744.html

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐