源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

共享锁using范围的实现方法

  • 时间:2020-07-12 14:37 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:共享锁using范围的实现方法
[u]复制代码[/u] 代码如下:
/// <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); }     } }
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部