当前位置:  编程技术>.net/c#/asp.net

共享锁using范围的实现方法

    来源: 互联网  发布时间:2014-10-18

    本文导语:  代码如下:/// 共享锁 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 writ...

代码如下:

/// 共享锁
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); } }
    /// 释放所有锁
    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); }
    }
}


    
 
 

您可能感兴趣的文章:

  • Linux 共享内存介绍及实现代码
  • 技术文章 iis7站长之家
  • linux下如实现与window下的驱动器实现文件共享??
  • linux与windows如何实现共享
  • 请教POSIX 和 System V 实现的内存共享的相同及不同之处
  • 急,请问linux可以实现跟win2K的网络共享吗?
  • Linux怎样实现单网卡共享上网????????????????
  • 如何实现Unix/linux服务器之间文件的相互共享?
  • 怎么实现INTERNET共享呢?
  • 如何实现linux和win2000下的资源共享?
  • 如何用RedHat 9.0自带的Apache在局域网内实现文件共享?
  • unbuntu下安装了VirtualBox装了个 XP的虚拟机,那么这两个系统之间怎么实现资源共享?
  • vm6.5.2安装vmtool 无法实现共享问题
  • 共享库如何在编译的时候确定哪些函数没有实现?
  • 怎么实现INTERNET共享呀?
  • TurboLinux 7.0 下实现与Windows 共享
  • 怎么在LINUX 9.0下实现网络文件共享
  • linux系统怎样设置才能实现组成局域网共享宽带啊!
  • 如何实现windows和linux两台机子的文件共享
  • linux下如何实现重新加载共享内存?
  • 如何实现异构系统之间的文件共享?急需!!!谢谢!!!
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 小问题:Virtual PC与主机共享目录不需网络的方法
  • windows和linux共享文件的最好方法。
  • 请教不需要网络使虚拟机Virtual PC与主机共享的方法
  • 请大家讨论,来者有分,java中多个线程之间共享数据的方法都有哪些?
  • php跨域cookie共享使用方法
  • 如何实现多进程间的方法及数据共享
  • VMware中Linux共享mysql数据库的方法
  • java通过共享变量结束run停止线程的方法示例
  • 多个jsp页面共享一个js对象的超级方法
  • Cookie在域中的读写实现顶级域共享的方法
  • android不同activity之间共享数据解决方法
  • web服务器集群(多台web服务器)session同步、共享的3种解决方法
  • Nginx中共享session会话配置方法例子
  • 单台服务器的PHP进程之间实现共享内存的方法
  • 实现Asp与Asp.Net共享Session的方法
  • 关于linux与windows组对等网的方法以及如何配制共享资源
  • linux下进程间通信:共享内存原理及具体用法举例(基于c/c++语言)
  • NFS共享作业时, 在客户端只可以看到服务器端的共享目录,而看不到共享目录下的内容.?
  • 如何共享 共享库(*.so)中的变量?
  • 局域网共享问题:win2000的机器看不到linux机器的共享目录?
  • 用samba共享其它机子访问Linux共享时,机子可以进入,但要打开共享文件夹时提示“无法访问...找不到网络名。”这是什么原因呢?
  • 局域网中的红旗2.0如何共享到win98服务器的联接共享?
  • 在linux下能不能创建一个堆,然后给堆指定一块共享内存,然后各个程序用此堆来new对象来共享?
  • 局域网共享问题:win2000的机器看不到linux机器的共享目录?解决立即给分
  • 几个servlet共享一些数据 如我从数据库里读出一些重要的设置存入vector 让几个servlet共享 怎么做到?先谢
  • 求助linux普通用户下内存共享(系统V共享)大家进来看看啊!急!!
  • 关于中断共享的问题:ADC 与触摸屏的中断共享
  • 不同用户user之间如何访问共享内存?
  • 无法访问samba服务器中的共享文件夹
  • XP下设置与linux 本地连接的Internet共享问题
  • Unix/linux下如何监测共享内存的使用情况


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3