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
我会看情况来使用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
相关文章推荐
- 用哪个创建线程CreateThread还是_beginthread
- -用哪个创建线程CreateThread还是_beginthread
- Windows下创建线程的方法_beginThread和CreateThread
- windows笔记-创建线程的函数CreateThread
- 在Delphi中创建线程,请一定使用BeginThread()代替CreateThread()创建线程!
- _beginthread, CreateThread,Win32下线程调用函数族CRT方式好,还是SDK方式好。
- 在Delphi中创建线程,请一定使用BeginThread()代替CreateThread()创建线程!
- 创建一个线程用哪个好?--CreateThread._beginthread.AfxBeginThread比较
- CreateThread与_beginthread, _beginthreadex创建线程的基本概念和区别(1)
- 学习笔记:windows下,用c语言来创建线程
- 在Delphi中创建线程,请一定使用BeginThread()代替CreateThread()创建线程!
- CreateThread与_beginthread, _beginthreadex创建线程的基本概念和区别
- CreateThread与_beginthread, _beginthreadex创建线程的基本概念和区别(1)
- 在windows上,AfxBeginThread 和 CreateThread 创建的线程是有一点区别的
- 创建线程的方法【CreateThread, AfxBeginThread,_beginthread, _beginthreadex的区别】
- 在Delphi中创建线程,请一定使用BeginThread()代替CreateThread()创建线程!(更好的管理异常)
- windows笔记-创建线程的另一个函数_beginthreadex
- windows笔记-创建线程的另一个函数_beginthreadex
- windows笔记-创建线程的另一个函数_beginthreadex
- 0036 Java学习笔记-多线程-创建线程的三种方式