六、 线程

1. 线程 = 线程内核对象 + 线程栈

     线程栈用于维护线程执行时所需的所有函数参数和局部变量

2. 线程共享同一地址空间,线程共享内核对象句柄,因为句柄表是针对每一个进程的而不是针对线程的。

3. 进程所使用的系统资源更多。其原因在于地址空间。(为一个进程创建一个虚拟的地址空间需要大量的系统资源,系统中会发生大量的记录活动,而这需要大量的内存)

4. 所有窗口应该由同一个线程创建

   实践:用户界面线程 + 受限于计算能力或IO的工作线程(永远不创建窗口)

5. 线程函数应尽可能使用函数参数和局部变量。使用静态变量和全局变量时,多个线程可以同时访问这些变量。这样可能破坏变量中保存的内容。

6. 新线程可以访问进程内核对象的所有句柄、进程中的所有内存以及同一进程中其他所有线程的栈,这样一来,同一个进程中的多个线程可以很容易地相互通信

7. 无穷递归会耗尽线程的栈

8. 一个线程有两个用户对象: 窗口和挂钩。 一个线程终止时,系统会自动销毁由线程创建或安装的任何窗口。并卸载由线程创建或安装的挂钩。

9. 每个线程都有自己的一组cpu寄存器。 称为线程上下文(context)

上下文: 指令指针寄存器     IP

                         栈指针寄存器        SP

                         其它

10.   p52

      createthread(....   RtluserThreadStart, pvParam);

  void RtlUserThreadStart ()

{

线程函数                                                <--------------- 线程不能退出此函数,始终在其内部消亡。

       exitprocess

}


11. 使用_beginthreadex 而不是使用createThread      p161

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值