当前位置: 移动技术网 > IT编程>开发语言>c# > 共享锁using范围的实现方法

共享锁using范围的实现方法

2019年07月18日  | 移动技术网IT编程  | 我要评论

复制代码 代码如下:

/// <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); }
    }
}

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网