用自己的话总结【windows核心编程】
来源:互联网 发布:淘宝哪里进货 编辑:程序博客网 时间:2024/06/10 10:06
哈哈!
开始!!
为什么会有关键段这个东西?
首先我们已经有了Interlocked函数了,这些函数可以在用户态下进行多线程互斥,为什么可以在用户模式下进行多线程互斥呢?因为一般的认识来看的话,必须是多个线程可以共享的东西,当然全局变量符合这个条件,但是全局变量是不合适的,如果把一个全局变量当锁来用,我们会先判断一下他是不是可以用,假如可以用,我们就得把他变得不可用,就像厕所门一样,发现里面没人,我们就可以进去,然后把门锁上。但是这个锁门的动作是有风险的。为什么会有风险这里就不讲了。内核对象用来互斥是完全可以理解的,因为计算机的一切都是操作系统在控制,包括线程切换。应该来讲用户模式下是无法进行多线程互斥的,这个Interlocked函数到底有什么能耐?原来他可以在总线上维持一个硬件信号,这个信号会阻止其他CPU访问同一个内存地址。具体的原理还是不是很清晰,但是可以知道是硬件信号来进行保护的。
恩,这下我们知道Interlocked这个函数的原理了,这个函数一般怎么用的呐?这是一个系列。
Interlocked比较重要的应用在旋转锁上,旋转锁的时候,2个旋转的线程始终处于调度状态,浪费CPU严重。还是举厕所的例子,假如A是小便,那B时不时跑过去看看厕所还有没有人是可以的。但是假如A是大便,那B最好等较长的时间再去看比较好,对于计算机而言,应该让B回内核睡一会。
这里插播旋转锁的一些东西。
旋转锁就是在程序运行中,程序要确认现在门有没有打开,一般用程序表达的会是:while(门关着){...}。这样的缺点就是你发现门关着,你就一有机会就去看看。一旦发现门打开了,立马冲进去了。但是当你判断
Interlocked函数在用户模式下,你没办法让线程暂时睡一会啊。当然每次都让B睡觉是可以的,但是我们是不知道A是大便还是小便的,假如A小便,我们就亏了,B白睡了。
所以关键段就是一个比较好的策略了。这个书上讲的很清楚了。这里不重复了。
- 用自己的话总结【windows核心编程】
- 函数错误处理二(总结自己windows编程核心)
- windows核心编程 总结
- 用自己的话总结arrayList与LinkedList
- windows核心编程-进程权限总结
- 【Windows 核心编程】Windows 核心编程 -- 进程
- 【Windows核心编程】Windows核心编程 -- 作业
- 给自己这个初学编程的话
- 编程之禅 -- 写给自己的话
- 用毛主席的话勉励自己
- 函数错误处理一(总结自windows编程核心)
- Windows 核心编程笔记一:关于Error Show的总结
- windows 核心编程-读后总结 -第六章 线程基础
- Windows核心编程(三)
- windows核心编程--字符集
- windows核心编程--进程
- windows核心编程--作业
- windows核心编程--线程
- 总结一下IOS内存管理
- CKEditor的安装与基本使用(JSP)
- 【转】Linux 关于动态链接库以及静态链接库的一些概念
- 多进程与多线程(一)
- squid个人笔记
- 用自己的话总结【windows核心编程】
- 为什么两台6410开发板之间无法ping通呢
- iPhone默认口令可能导致用户信息泄露!
- zigbee协议与开发-ZStack中之协调器数据包解析
- java String getBytes
- 获取sql的执行计划总结!
- socket 查询百度
- 网络拓扑结构设计(二)
- Session应用--用servlet写一次性验证码