CLR Via C#读书笔记——Monitor类同步线程【2011-02-10】
来源:互联网 发布:java排序算法面试题 编辑:程序博客网 时间:2024/05/21 01:54
为了对同步块加锁或解锁,我们需要调用System.Threading.Monitor类中定义的静态方法。调用下面的方法可以对对象的同步块加锁:
static void Enter(Object obj);
调用这个方法时,该方法首先检查指定对象的同步块的索引是否为负值,如果是负值,那么方法就找到一个空闲的同步块,然后方法将该同步块的索引记录到对象的同步块索引中。顺便说一下,CLR拥有一个线程安全的方式来查找空闲的同步块并将其与对象关联。一旦同步块与对象关联,Monitor.Enter方法就会检查指定对象的同步块,看是否有另一个线程拥有该同步块。如果该同步块当前没有被其他线程拥有,那么调用线程将拥有这个同步块。从另一方面讲,如果Monitor.Enter方法调用时另一个线程拥有这个同步块,那么调用线程将被挂起,直至当前拥有这个同步块的线程释放了这个同步块。
一旦线程获得了同步块的拥有权,那么代码就可以访问同步块所保护的任何数据。当线程访问完数据后,线程应通过调用Monitor.Exit方法来释放同步块:
static void Exit(Object obj);
如果线程在调用Monitor.Exit方法时还没有拥有指定的对象的同步块,会有一个SynchronizationLockException异常抛出。同样需要引起注意的是线程可以递归拥有同步块:对于每个Monitor.Enter或者Monitor.TryEnter方法的成功调用,在认为不需要拥有同步块时,必须相应地调用一个匹配的Monitor.Exit方法。
- CLR Via C#读书笔记——Monitor类同步线程【2011-02-10】
- 属性——CLR via C# 读书笔记
- 泛型——CLR via C# 读书笔记
- CLR via C# —— 线程
- CLR Via C#读书笔记——CLR分配内存【2011-01-17】
- clr via c#读书笔记
- CLR via C#读书笔记
- CLR Via C# 第四章 类型基础——读书笔记
- CLR via C# 读书笔记 1-2 创建线程的成本
- CLR Via C#读书笔记——可空值类型操作符运算【2011-01-14】
- CLR Via C#读书笔记——垃圾收集(Timer)【2011-01-18】
- CLR Via C#读书笔记——Finalize方法被调用的时机【2011-01-18】
- CLR Via C#读书笔记——using语句【2011-01-19】
- CLR Via C#读书笔记——StreamWriter中的依赖问题【2011-01-19】
- CLR Via C#读书笔记——垃圾收集相关知识点【2011-01-20】
- CLR via C# 读书笔记目录
- CLR Via C# 第一章(CLR的执行模型)——读书笔记
- 《CLR via C#》读书笔记-线程同步(一)
- matlab中矩阵与常量比较的返回值
- Android Widget开发模板
- 什么是现阶段的云计算,因为网友问,这里给一个比较典型的定义
- 为组件添加边框
- 一封超级牛的数据库程序员的情书表白
- CLR Via C#读书笔记——Monitor类同步线程【2011-02-10】
- struts2与spring结合后的生命周期
- 正则常用分组语法
- 在Ubuntu 10.10 NetBook下使用天翼上网卡
- 在android中使用MAP如何实现导航??
- 数字的格式化
- cegui075相关编译东西,做下记录
- Panabit标准版
- JTABLE查询数据显示