zoukankan      html  css  js  c++  java
  • c# 线程同步各类锁

     1)原子操作(Interlocked):所有方法都是执行一次原子读取或一次写入操作。

      2)lock()语句:避免锁定public类型,否则实例将超出代码控制的范围,定义private对象来锁定。

      3)Monitor实现线程同步

        通过Monitor.Enter() 和 Monitor.Exit()实现排它锁的获取和释放,获取之后独占资源,不允许其他线程访问。

        还有一个TryEnter方法,请求不到资源时不会阻塞等待,可以设置超时时间,获取不到直接返回false。

      4)ReaderWriterLock

        当对资源操作读多写少的时候,为了提高资源的利用率,让读操作锁为共享锁,多个线程可以并发读取资源,而写操作为独占锁,只允许一个线程操作。

      5)事件(Event)类实现同步

        事件类有两种状态,终止状态和非终止状态,终止状态时调用WaitOne可以请求成功,通过Set将时间状态设置为终止状态。

        1)AutoResetEvent(自动重置事件)

        2)ManualResetEvent(手动重置事件)

      6)信号量(Semaphore)

          信号量是由内核对象维护的int变量,为0时,线程阻塞,大于0时解除阻塞,当一个信号量上的等待线程解除阻塞后,信号量计数+1。

          线程通过WaitOne将信号量减1,通过Release将信号量加1,使用很简单。

      7)互斥体(Mutex)

          独占资源,用法与Semaphore相似。

       8)跨进程间的同步

          通过设置同步对象的名称就可以实现系统级的同步,不同应用程序通过同步对象的名称识别不同同步对象。

  • 相关阅读:
    项目相关的风险要素及分类
    IT从业人员必看的10个论坛(转)
    Android Input设备debug技巧
    Android中如何判断是否联网
    paip.tree 生成目录树到txt后的折叠查看
    hdu 4737 A Bit Fun
    FLASH ROM与EEPROM的区别
    Robot Framework学习路线
    Distinguishing Between Embedded and General-Purpose Computing
    服务的生命周期
  • 原文地址:https://www.cnblogs.com/yy1234/p/7691075.html
Copyright © 2011-2022 走看看