用户模式下的线程同步
来源:互联网 发布:网络继电器是什么 编辑:程序博客网 时间:2024/05/16 18:22
用户模式下的线程同步主要在于不会进入等待状态(有时也会进入等待状态,像关键段和slim读写锁,但是可以设置“忙等”的时间)。但是,由于使用它们的时候只是像声明全局变量那样,它们只能在进程内同步,不能在进程之间做同步。
包括如下4中用户模式下的同步机制。
1. Interlocked系列函数,比如InterlockedExchangeAdd64,会以原子访问方式完成将一个数加上另一个数的操作。这些函数作用太小了,用的少。
2. 关键段,也即操作系统课上讲的临界区,CritcalSection。书上有一个卫生间的比喻,非常形象。使用时临界区时主要涉及五个函数:InitializeCriticalSection用于初始化、EnterCriticalSection进入临界区、TryEnterCriticalSection用于尝试进入临界区而不等待、LeaveCriticalSection用于离开临界区、DeleteCriticalSection用于清理。使用临界区时可以设置进入等待状态之前的“忙等”时间,只要使用InitializeCriticalSectionAndSpinCount来代替InitializeCriticalSection做初始化。临界区可以被多次锁定。
3. Slim读写锁SRWLock,分为用于写者的排他锁和用于读者的共享锁。也涉及几个函数,基本原理和CriticalSection差不多。但是SRWLock不能多次被锁定,也没哟Try*的尝试进入函数。
4. 条件变量CONDITION_VARIABLE,可以配合上述两种锁使用。条件变量的主要作用是让线程把锁释放并将自己阻塞,直到一个条件成立位置。当然,前提是要先占有锁。连个函数:SleepConditionVariableCS和SleepConditionVariableSRW,分别对应关键段和Slim读写锁。比如另一个线程想宣布条件满足了,可以调用WakeConditionVariable和WakeAllConditionVariable函数。这样之前阻塞的线程就被转为可调度状态。
- 用户模式下的线程同步
- 用户模式下的线程同步
- Chapter08-用户模式下的线程同步
- 用户模式下的线程同步
- 八、 用户模式下的线程同步
- 八 用户模式下的线程同步
- 用户模式下的线程同步
- Chapter08-用户模式下的线程同步
- 用户模式下的线程同步
- 用户模式下的线程同步
- 线程同步(1) - 用户模式下的线程同步
- Windows线程同步—用户模式下的线程同步
- 线程同步(1) - 用户模式下的线程同步
- 线程同步——用户模式下的线程同步
- 用户模式下线程同步
- 用户模式下线程同步
- 用户模式的线程同步
- Windows核心编程:用户模式下的线程同步
- windows下安装apache2.2+svn总结
- afnet
- 唐僧为什么可以领导孙悟空(项目管理)
- 千与千寻django(一)---安装
- OMAPL138 PRU SOFT-UART实现(一)
- 用户模式下的线程同步
- @JSON(serialize=false) public MenuitemService<MenuitemDao, Menuitem> getMenuitemService() { 懒加载问题
- 黑马程序员-java反射基础
- 2012-03-30 22:38 OMAPL138 PRU SOFT-UART实现(二)
- C++学习笔记-类5-浅拷贝和深拷贝以及赋值操作符的重载
- 为WebService添加描述
- 4_3
- 知识管理树加载出来 kynamic.kynamicTreeOption.loadKynamicTree(); oOA中的jsTree
- 浅析PageRank算法