线程的基本知识

_beginthreadex的一些要点
1.每个线程均获得c/c++运行时库的栈分配的自己的tiddata内存结构
2.传递给_beginthreadex的线程函数的地址和参数保存在tiddata内存块中
3._beginthreadex从内部调用CreateThread,因为这是操作系统内部了解如何创建新线程的唯一方法
4.调用CreatedThread时,被告知调用_threadstartex而不是pfnStartAddr来启动执行新线程,传递给线程函数的参数是tiddata而不是pvParam

 

_threadstartex函数的一些要点
1.新线程开始从BeginthreadStart函数执行,然后转移到_threadstartex
2.到达该新线程的tiddata块的地址作为其唯一参数被传递给_threadstartex
3.TlsSetValue是个操作系统函数,负责将一个值与调用线程联系起来
4.一个SEH帧被放置在需要的线程函数周围,该帧负责处理与运行时库相关的许多事情
5.调用必要的线程函数,传递必要的参数
6.必要的线程函数返回值,被认为是线程的退出代码

 

_endthreadex的一些要点
1._getptd函数内部调用操作系统的TlsGetValue函数,该函数负责调用线程的tiddata内存块的地址
2.然后释放这个数据块,调用操作系统的ExitThread函数

 

转载于:https://www.cnblogs.com/debug-me/p/6538023.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值