共享锁using范围的实现方法_C#教程-查字典教程网
共享锁using范围的实现方法
共享锁using范围的实现方法
发布时间:2016-12-28 来源:查字典编辑
摘要:复制代码代码如下:///共享锁publicclassShareLock{ReaderWriterLockLock;IDisposablere...

复制代码 代码如下:

/// <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#教程学习
    编程开发子分类