关于线程创建问题

charlyisme 2001-03-03 12:40:00
小弟有两个问题:
::CreateThread 与AfxBeginThread 有什么区别。
而DWORD WINAPI mythread(LPVOID lp)
与UNIT mythread(LPVOID lp)两种定义又有什么不同?返回值是什么?

希望各位大侠帮帮忙!
...全文
143 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
pigheart 2001-03-07
  • 打赏
  • 举报
回复
我主张在WIN32 SDK开发的程序中用CreateThread,而在MFC的程序中用AfxBeginThread而且AfxBeginThread专门针对MFC开发使用的,还有一点,纯数我的个人见解,用AfxBeginThread最好是和CWinThread配合,这可能更符合面对对象吧!
In355Hz 2001-03-07
  • 打赏
  • 举报
回复
当然了,AfxBeginThread返回的就是一个CWinThread对象的指针嘛
In355Hz 2001-03-06
  • 打赏
  • 举报
回复
注意!
我看了一下AfxBeginThread的原代码,发现AfxBeginThread在内部调用的不是CreateThread,而是_beginthreadex()!而_beginthreadex()和CreateThread()对C标准库函数的支持不同,如果向CreateThread传递的线程函数中调用到C标准库函数的话,创建可能是不安全的(可能产生内存泄漏)。而_beginthreadex则完全支持C标准库。
所以,如果要准备在线程中使用C标准库函数的话,应该用AfxBeginThread,或_beginthreadex,否则可以用CreateThread。
所以,
AfxBeginThread将_beginthreadex进行了包装,是之能包含和CreateThread类似的特性。
Rechard_G 2001-03-03
  • 打赏
  • 举报
回复
gateh老兄说的好象有点不对!afxBeginThread其实是对CreateThread的一个封装最终还是要调用CreateThread来创建线程,不同的只是在调用CreateThread之前还先准备了一些相关的数据和进行一些必要的参数检查而已。至于线程创建后是不是立即启动只取决与入口参数而与用afxBeginThread和CreateThread无关。
gateh 2001-03-03
  • 打赏
  • 举报
回复
其实这个问题在MSDN中可以找到答案的,第一个函数(createthread)创建之后线程并不立即启动,需要调用好像是create()这个函数才能的。第二个函数(afxbeginthread)在调用之后就可以马上启动,执行你指定要执行的那个函数。至于定义,则是ms的固定定义,就是要求那个样,不用讲为什么的,返回值一般也是不用关心的
charlyisme 2001-03-03
  • 打赏
  • 举报
回复
有没有人帮帮忙,指点指点小弟啊!

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧