共享锁using范围的实现方法
更新时间:2020年6月25日 11:42 点击:1566
复制代码 代码如下:
/// <summary>共享锁</summary>
public class ShareLock
{
ReaderWriterLock Lock;
IDisposable readLock, writeLock;
public IDisposable ReadLock { get { Lock.AcquireReaderLock(-1); return readLock; } }
public IDisposable WriteLock { get { Lock.AcquireWriterLock(-1); return writeLock; } }
public IDisposable UpgradeLock { get { return new UpgraderLocked(Lock); } }
/// <summary>释放所有锁</summary>
public void ReleaseLock() { Lock.ReleaseLock(); }
public ShareLock()
{
this.Lock = new ReaderWriterLock();
this.readLock = new Locked(Lock.ReleaseReaderLock);
this.writeLock = new Locked(Lock.ReleaseWriterLock);
}
class Locked : IDisposable
{
ThreadStart ReleaseLock;
public Locked(ThreadStart ReleaseLock) { this.ReleaseLock = ReleaseLock; }
public void Dispose() { this.ReleaseLock(); }
}
class UpgraderLocked : IDisposable
{
delegate void ReleaseLockHandler(ref LockCookie lockCookie);
ReleaseLockHandler ReleaseLock;
LockCookie Cookie;
public UpgraderLocked(ReaderWriterLock locker)
{
Cookie = locker.UpgradeToWriterLock(-1);
this.ReleaseLock = locker.DowngradeFromWriterLock;
}
public void Dispose() { this.ReleaseLock(ref Cookie); }
}
}
下一篇: c# 匿名方法的小例子
相关文章
- 本文介绍的是C#中using指令的几种用法,希望对你有帮助,一起来看吧!...2020-06-25
- 这篇文章主要介绍了c#索引(Index)和范围(Range)的相关资料,帮助大家更好的理解和学习c#,感兴趣的朋友可以了解下...2020-12-08
- Android4.0设计规定的有效可触摸的UI元素标准是48dp,转化为一个物理尺寸约为9毫米。7~10毫米,这是一个用户手指能准确并且舒适触摸的区域。本文将介绍Android扩大View点击范围的方法...2021-05-18
- using Net::SSH2 shell 的二个方法,供大家参考...2020-06-29
- 这篇文章主要为大家详细介绍了C# using的用法与好处,具体分析了using指令调用的Dispose()方法,感兴趣的朋友可以参考一下...2020-06-25
Jquery ui datepicker设置日期范围,如只能隔3天【实现代码】
下面小编就为大家带来一篇Jquery ui datepicker 设置日期范围,如只能隔3天【实现代码】。小编觉得挺不错的,现在分享给大家,也给大家做个参考...2016-05-05- php教程 intval的取值范围:与操作系统相关,32位系统上为-2147483648到2147483647,64位系统上为-9223372036854775808到9223372036854775807。 mysql教程 int取值范围:与...2016-11-25
C#巧用DateTime预设可选的日期范围(如本年度、本季度、本月等)
这篇文章主要介绍了C#巧用DateTime预设可选的日期范围,如本年度、本季度、本月等,感兴趣的小伙伴们可以参考一下...2020-06-25- 本文介绍了,几种using 的使用方法,需要的朋友可以参考一下...2021-09-22
嵌入式项目使用C语言结构体位段特性实现断言宏校验数据范围有效性的方法
今天小编就为大家分享一篇关于嵌入式项目使用C语言结构体位段特性实现断言宏校验数据范围有效性的方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧...2020-04-25- 这篇文章主要为大家详细介绍了C# using三种使用方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2020-06-25
- 在php中生成随机数据我们可以使用rand,mt_rand都可以生成指定范围内随机数据了,下面小编来给各位同学介绍一下方法。 调用mt_rand()这个方法可以生成随机数字,参数...2016-11-25
- 这篇文章主要介绍了PHP和MySql中32位和64位的整形范围是多少的相关资料,需要的朋友可以参考下...2016-02-20
- 这篇文章主要介绍了MySQL的指定范围随机数函数rand()的使用技巧,需要的朋友可以参考下...2016-10-02
- 这篇文章主要介绍了C语言安全编码的数组索引位合法范围剖析,对于编码安全非常重要!需要的朋友可以参考下...2020-04-25
- 这篇文章主要介绍了DataReader不能使用using的详细示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-09-22
- 这篇文章主要介绍了SpringIOC容器中bean的作用范围和生命周期,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-02-22
- 这篇文章主要给大家介绍了关于C# using语法糖的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧...2021-01-16
- 共享锁using范围的实现方法,需要的朋友可以参考一下...2020-06-25
- 通过本教程可以实现帝国CMS自定义字段实现价格区域范围筛选具体步骤如下:自定义字段gprice,且在模型里,必须勾选该字段为结合项。四个默认字段mid是模型ID,classid是栏目ID,tempi...2016-01-27