国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

共享鎖using范圍的實(shí)現(xiàn)方法

2020-01-24 03:29:36
字體:
供稿:網(wǎng)友

復(fù)制代碼 代碼如下:

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

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 客服| 莱芜市| 米泉市| 柘荣县| 澄城县| 竹北市| 玛纳斯县| 剑河县| 保德县| 海口市| 汽车| 金门县| 江门市| 宁武县| 龙山县| 和平县| 乐安县| 商都县| 兰溪市| 苏尼特右旗| 武川县| 镇平县| 石柱| 潞西市| 于都县| 阳曲县| 西乡县| 孟州市| 花莲县| 永新县| 涡阳县| 易门县| 改则县| 玉门市| 台东市| 登封市| 和林格尔县| 濮阳市| 梁河县| 南华县| 兰坪|