zoukankan      html  css  js  c++  java
  • .NET线程同步原语

    第五章

    [互斥]

      用户模式    Interlock原子锁(原子加减交换,非原子:将共享变量的值加载到寄存器,2操作寄存器的值,3将新的值存储到共享实例变量中),Barrier(屏障,设置好的数量都到达进入下一步)

      内核模式    Mutex互斥锁(那个线程获取,那个线程释放;可以跨进程)

      混合模式    Monter,SpinLock自旋锁(struct,构造函数false表示禁用作为调试目的,不可用使用readonly)SpinWait自旋等待

    [信号量] 信号量进入计数器减1,计数器到0阻塞后续

          用户模式           CountdownEvent 计数变为0时处于有信号状态的同步基元 通过信号机制

      内核模式    Semaphore(可以跨进程)

      混合模式    SemaphoreSlim(不可跨进程)

    [事件通知] set/wait信号

      内核模式    ManualResetEvent, AutoResetEvent(可以跨进程)

      混合模式    ManualResetEventSlim, AutoResetEventSlim(不可跨进程)

    [Thread]

          volatile/Thread.Volatile***       易失变量。多核心的多级缓存会缓存同一地址的内存,读出写入可能会受影响,易失变量让内存操作可见

      Thread.Yeild    让出时间片,进入就绪状态,只能调度同一个CPU的线程,允许低优先级的线程调度

      Thread.Sleep(0)  让出时间片,进入就绪状态,可以调度任何CPU的线程,但是只能调度同级或高级优先级的线程

      Thread.Sleep(1)  让出时间片,进入阻塞状态,可以调度任何CPU的线程,可以调度任何界别的就绪线程,不是1毫秒,时间片的原因可能滞后

      Thread.SpinWait  自旋等待,循环N次让出时间片,struct只有int32那么大

    [其他]

      内核模式可以跨进程,混合/用户模式不可跨进程。锁对象是使用(同步块索引)

  • 相关阅读:
    Bootstrap(9) 巨幕页头缩略图和警告框组件
    Java使用点滴
    Bootstrap(8) 路径分页标签和徽章组件
    视频会议系统MCU服务器视频传输处理模式
    honeywell1900扫描枪的使用说明
    WebDev.WebServer20.exe应用程序错误
    UEFI引导过程及windows引导修复
    低分辨率的显示器模拟高分辨率显示模式
    IIS应用程序池权限与虚拟目录身份验证权限
    ADO.Net操作数据库的方式
  • 原文地址:https://www.cnblogs.com/DexterDi/p/4180561.html
Copyright © 2011-2022 走看看