国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 永安市| 大足县| 辽宁省| 南漳县| 兴城市| 济宁市| 汉源县| 灌云县| 东乌珠穆沁旗| 姚安县| 胶州市| 牡丹江市| 陇西县| 呼伦贝尔市| 来宾市| 祁连县| 青神县| 满城县| 邢台县| 灵台县| 江达县| 于田县| 清流县| 灵石县| 兴隆县| 繁昌县| 瓮安县| 寿光市| 丹江口市| 开鲁县| 霍州市| 元江| 西乡县| 长治县| 怀宁县| 崇文区| 蒙山县| 阳原县| 乌拉特后旗| 玉林市| 揭西县|