2017年11月24日

C# ManualResetEventSlim 实现

摘要: ManualResetEventSlim通过封装 ManualResetEvent提供了自旋等待和内核等待的组合。如果需要跨进程或者跨AppDomain的同步,那么就必须使用ManualResetEvent,而不能使用ManualResetEventSlim。那么首先我们看看 ManualReset 阅读全文

posted @ 2017-11-24 22:40 dz45693 阅读(5273) 评论(0) 推荐(3) 编辑

C# Monitor实现

摘要: Monitor的code如下,非常简单: 核心方法就是Enter和Exit,其中lock关键字就是这2个方法的一个封装,剩下的Wait、Pulse和PulseAll也是很重要的方法,但是平时运用的比较少。所以这里重点说说Wait、Pulse和PulseAll方法。 线程优先顺序: 【等待队列】->【 阅读全文

posted @ 2017-11-24 21:09 dz45693 阅读(1673) 评论(0) 推荐(0) 编辑

C# SpinLock实现

摘要: 关于SpinLock自旋锁网上已经有很多说明,这里也copy了一部分,我这里主要关注微软的实现,学习人家的实现方式。 如果由于垃圾回收,基于对象的锁对象开销太高,可以使用SpinLock结构。.NET 4以后版本可使用,如果你有很多个锁(如,一个列表里面的每一个节点)并且锁时间通常非常的短,使用Sp 阅读全文

posted @ 2017-11-24 18:41 dz45693 阅读(1604) 评论(0) 推荐(1) 编辑

C# SpinWait 实现

摘要: 其实SpinWait的code 非常简单,以前看过很多遍,但是从来都没有整理过,整理也是再次学习吧。 我们先看看SpinWait的一些评论或者注意点吧:如果等待某个条件满足需要的时间很短,而且不希望发生昂贵的上下文切换,那么基于自旋的等待是一种很好的替换方案,SpinWait不仅提供了基本自旋功能, 阅读全文

posted @ 2017-11-24 12:16 dz45693 阅读(2111) 评论(1) 推荐(3) 编辑

导航