_beginthreadex 和 _beginthread 的区别

_beginthreadex 和 _beginthread 的区别一 函数原型 uintptr t beginthread nbsp nbsp void start address void nbsp nbsp unsignedstac size nbsp nbsp void arglist uintptr t beginthreade nbsp nbsp void security nbsp nbsp unsignedstac size

一,函数原型

uintptr_t _beginthread(

   void( *start_address )( void * ),

   unsigned stack_size,

   void *arglist

);

uintptr_t _beginthreadex(

   void *security,

   unsigned stack_size,

   unsigned ( *start_address )( void * ),

   void *arglist,

   unsigned initflag,

   unsigned *thrdaddr

);    

 

二,_beginthreadex 和 _beginthread 的区别

(1),参数:

参数start_address的返回值:beginthread没有返回值,beginthreadex返回线程退出代码;

参数start_address的调用约定:beginthread –> cdecl,beginthreadex –> stdcall;

(2),返回值:

出现错误时, beginthread返回-1, beginthreadex返回0。

(3),新线程的初始状态:

beginthreadex –> Initflag:0 –> 立即执行,CREATESUSPEND –> 暂停 (使用ResumeThread激活线程)。

(4),_endthreadex & _endthread:

_endthread将会自动的关闭线程句柄,然而_endthreadex不会,需要使用CloseHandle现实的关闭句柄。所以_beginthreadex函数可以使用WaitForSingleObject函数来获取线程对象来进行同步。

三,_beginthreadex 和 CreateThread 的区别

(1),_beginthreadex的参数和CreateThread差不多。

(2),CreateThread()的第三个参数函数指针是unsign long的, 而_beginthreadex()的第三个参数函数指针是unsign int的。

(3),CreateThread(), 返回的是创建的线程的HANDLE, 而_beginthreadex()返回的一个是unsigned long. 需通过reinterpret_cast

或(HANDLE)来强制转换。



 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/212894.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 下午7:00
下一篇 2026年3月18日 下午7:01


相关推荐

  • pycharm怎样改成中文教程

    pycharm怎样改成中文教程相信 pycharm 不会改成中文是一件很头疼的事情 特别是对一些新手来说下面放教程 点击 File 点击 Settings 在 settings 中找到 Chinese simplified 点击 install 然后就变成中文了

    2026年3月27日
    2
  • busybox如何安装(如何安装busybox)

    step1.adbpushc:/busybox/mnt/sdcard/step2.用”re文件管理器”把已经拷到sdcard的busybox移动到/system/xbin目录step3.依次执行下面adb命令adbshellsumount-oremount,rw-tyaffs2/dev/block/mtdblock3/systemcd/syste

    2022年4月12日
    192
  • 史上最全的SpringMVC学习笔记

    史上最全的SpringMVC学习笔记

    2022年3月2日
    64
  • js判断元素在不在数组中_js判断数组是否为空

    js判断元素在不在数组中_js判断数组是否为空1.indexOf方法letarr=[2,3,4];letres=arr.indexOf(2)//验证是否包含:2console.log(res)//结果:0letres2=arr.indexOf(3)//验证是否包含:3console.log(res2)//结果:1letres3=arr.indexOf(4)//验证是否包含:4console.log(res3)//结果:2letres4=arr.indexOf(5)//验证

    2022年8月30日
    4
  • 订单支付相关问题总结

    订单支付相关问题总结最近公司商城系统要重做,我接手了支付相关的需求,发现里面弯弯绕绕的地方还是有不少的,所以把碰到的问题记录一下。支付问题在第一次对接微信支付时,生成预支付单的接口会让使用微信商家平台的API密钥进行加签,但是就算你使用的API密钥确定没有问题,也可能会返回验签失败,一点办法也没有。解决方法:使用UUID重新生成了32位纯小写的密钥(我怀疑就是密钥格式问题引起的,从来没有见过密钥让用户手…

    2022年6月6日
    26
  • 到底学Python还是Java?一张图PK明白!

    到底学Python还是Java?一张图PK明白!点击上方“程序人生”,选择“置顶公众号”第一时间关注程序猿(媛)身边的故事Java和Python一直都是两种很火很强大的编程语言,对于刚开始起步学习编程的同学来说,会迷惑且最经常问的问题是,我该学Java还是Python,是不是Python容易学,或是应该先学什么编程语言等等这样的问题。作为一名Java程序员,肯定会建议你先学Java,然后再学Python,但如果你问一个

    2022年7月7日
    21

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号