用户方式同步的优点是它的同步速度非常快。但它也有其局限性。

例如,互锁函数家族只能在单值上运行,根本无法使线程进入等待状态。可以使用关键代码段使线程进入等待状态,但是只能用这些代码段对单个进程中的线程实施同步。还有,使用关键代码段时,很容易陷入死锁状态,因为在等待进入关键代码段时无法设定超时值。

  

内核对象机制的适应性远远优于用户方式机制。实际上,内核对象机制的唯一不足之处是它的速度比较慢(用户方式转为内核方式是1000个CPU周期)。

线程内核对象总是在未通知状态中创建。当线程终止运行时,操作系统会自动将线程对象的状态改为已通知状态。

                  下面的内核对象可以处于已通知状态或未通知状态:

■ 进程

■ 文件修改通知

■ 线程

■ 事件

■ 作业

■ 可等待定时器

■ 文件

■ 信标

■ 控制台输入

■ 互斥对象

线程同步的各种内核对象:事件、等待计数器,信标和互斥对象。

本文地址:http://www.cnblogs.com/fangyukuan/archive/2010/09/03/1817083.html

转载于:https://www.cnblogs.com/fangyukuan/archive/2010/09/03/1817083.html

windows笔记-【内核对象线程同步】概述相关推荐

  1. windows笔记-内核对象

    有哪些内核对象? 如下:存取符号对象.事件对象.文件对象.文件映射对象.I / O 完成端口对象.作业对象.信箱对象.互斥对象.管道对象.进程对象.信标对象.线程对象和等待计时器对象等.这些对象都是通 ...

  2. windows笔记-【内核对象线程同步】等待函数

    等待函数可使线程自愿进入等待状态,直到一个特定的内核对象变为已通知状态为止.   WaitForSingleObject 函数 DWORD WaitForSingleObject( HANDLE hO ...

  3. 线程与内核对象的同步——Windows核心编程学习手札之九

    线程与内核对象的同步 --Windows核心编程学习手札之九 用户方式下的线程同步机制具有速度快的特点,但有其局限性,对于许多应用程序来说,并不合适.例如,互锁函数家族只能在单值上运行,根本无法使线程 ...

  4. Windows核心编程 第九章 线程与内核对象的同步(上)

    第9章 线程与内核对象的同步 上一章介绍了如何使用允许线程保留在用户方式中的机制来实现线程同步的方法.用户方式同步的优点是它的同步速度非常快.如果强调线程的运行速度,那么首先应该确定用户方式的线程同步 ...

  5. 【Window】线程同步概述

    第一节:[Window]创建线程的3种方式 第二节:[Window]线程同步概述 第三节:[Window]线程同步方式1--临界区(关键代码段) 第四节:[Window]线程同步方式2--互斥量 第五 ...

  6. 《Windows via C/C++》学习笔记 —— 内核对象的“线程同步”之“信号量”

    "信号量内核对象"用于对资源进行计数. 在信号量内核对象内部,和其他内核对象一样,有一个使用计数,该使用计数表示信号量内核对象被打开的次数. 信号量内核对象中还有两个比较重要的数据 ...

  7. Windows核心编程 第九章 线程与内核对象的同步(下)

    9.4 等待定时器内核对象 等待定时器是在某个时间或按规定的间隔时间发出自己的信号通知的内核对象.它们通常用来在某个时间执行某个操作. 若要创建等待定时器,只需要调用C r e a t e Wa i ...

  8. 第九章 线程与内核对象的同步(6)

    六.其他的线程同步函数 1.异步设备I/O 异步设备I/O使得线程能够启动一个读操作或写操作,但是不必等待读操作或写操作完成.设备对象是可以同步的内核对象,可以调用WaitForSingleObjec ...

  9. 线程与内核对象的同步-2

    等待定时器内核事件 CreateWaitableTimer( PSECURITY_ATTRIBUTES psa, BOOL fManualReset, PCTSTR pszName); 进程可以获得它 ...

最新文章

  1. Android艺术——性能优化问题
  2. 【python进阶】_正则表达式
  3. 20.Java集合框架(四)
  4. LaTeX Cookbook by Eric
  5. python实践项目(五)
  6. SPSS图文教程:两个率的比较(卡方检验)及Fisher精确检验
  7. 智能聊天机器人平台的架构与应用
  8. 工程项目成本管控,不知从何下手?
  9. 高德地图怎么测量面积_高德地图如何测量海拔
  10. 收到offer不想去,如何优雅拒绝?
  11. 欠钱不还直接打,打到还钱才停
  12. 时光金科php_重庆金科博翠宸章 | ACA麦垦景观
  13. 【数学建模笔记】对策论
  14. PCA分析(主成分分析)--结果解读
  15. yii2实战之初见端倪
  16. linux rpm安装包忽视所有依赖强制安装
  17. excel的下载导出
  18. 【前端】JS异步加载
  19. First Solar推出两大新型光伏组件系列
  20. 人工智能与医疗 总览

热门文章

  1. RayMarching1:用射线的方式画一个球
  2. OpenGL基础42:实例化
  3. 派生类的构造复制与析构
  4. hduoj 6000 2016CCPC-final B. Wash(贪心)
  5. [python] linspace():获取等间隔数组
  6. matlab2c使用c++实现matlab函数系列教程-binopdf函数
  7. Perceptual Losses for Real-Time Style Transfer and Super-Resolution 运行程序
  8. 静电场求电场强度E和电势U的方法
  9. js 关系图插件_babel插件的相关知识
  10. UVA10838 The Pawn Chess