随笔分类 - C# 多线程
摘要:今天我们总结一下 C#线程同步 中的 Monitor 类 和 Lock 关键字进行一下总结。首先来看看他们有什么异同(相信对此熟悉的朋友们都很清楚):1、他们都是在指定对象上获取排他锁,用于同步代码区2、Lock关键字是Monitor的一种替换用法,lock在IL代码中会被翻译成Monitor.lock(obj){//代码段}就等同于Monitor.Enter(obj);//代码段Monitor.Exit(obj);所以lock能做的,Monitor肯定能做,Monitor能做的,lock不一定能做,我们今天就主要说的就是Monitor 类。Monitor 类 通过Enter(Object)
阅读全文
摘要:本篇我们主要总结和介绍一下利用属性标签方式对多线程进行方法同步和上下文同步,主要用到的是MethodImplAttribute 类 和 SynchronizationAttribute 类。这两个属于方法特性和类的特性,标识某个方法或类是同步方法,本质上还是基于Lock的实现的。首先我们还是来看一个例子,假如小明和小红两个人用都是主附银行卡,两个人都可以对帐户进行操作,比如帐户余额1000元,比如两个人几乎同时进行取钱600元的操作。代码如下:我们没有进行任何的同步措施,我们运行一下代码,看一下结果:(不同计算机执行结果可能不同)namespace ThreadAttribute{ cl...
阅读全文
摘要:最近工作闲暇之际,翻阅了以前保存的电子书《C#多线程编程手册》,发现此书同步技术这块写的甚好,于是参考此书并结合实例,对同步技术做一下总结和分析,也算是读书笔记与心得体会吧,并与大家分享。书中提到的同步技术有很多种,归纳起来常用的方式有以下几种:1、利用属性标签方式进行方法同步和上下文同步:MethodImplAttribute 类 和 SynchronizationAttribute 类2、同步代码区:Monitor 类、Lock 关键字、ReaderWriterLock 类。3、手控同步:AutoResetEvent 类、ManualResetEvent 类、Mutex 类、Interlo
阅读全文