1. 已知windows下可以用如下方法创建线程.
1) CreadThread(…). API
2) _beginthread(…). CRT
3) _beginthreadex(…). CRT
4) AfxBeginThread(…). MFC
由于AfxBeginThread()同学勾搭MFC, 扬言誓死不分, 开除先.
_beginthreadex()和_beginthread()长的很像, 没什么直接血缘关系, 但都是CRT所提供的线程创建方式. 显著区别在于参数和返回值上.
2. _beginthread(…)与_beginthreadex(…)区别.
1) 参数区别.
2) 返回值区别
_beginthread()返回-1表示失败, 而_beginthreadex()返回0表示失败
3) 实际过程区别.
3. _beginthreadex(…)与CreadThread(…)区别.
1) 参数区别.
两者参数基本相同, 只是CreadThread()的参数是windows定义的win32数据类型, 而_beginthreadex()是标准C/C++的数据类型. 需要注意的是, CreateThread()的第三个参数函数指针是unsign long的, 而_beginthreadex()的第三个参数函数指针是unsign int的.
2) 返回值区别.
CreateThread(), 返回的是创建的线程的HANDLE,
_beginthreadex(), 返回的一个是unsigned long. 需通过reinterpret_cast
3) 实际过程区别.
的
一般不建议直接调用CreateThread(), 除非可以非常确定
4. 选择_beginthreadex()和CreateThread()的一般性规则.
不建议使用CreateThread(). 尤其当线程:
l 使用了malloc()/free(), new/delete的线程.
l 调用stdio.h或io.h中声明的任何函数.
l 使用浮点变量.
5. 为什么winCE上只能用CreateThread()?
我也不知道为什么….