zoukankan      html  css  js  c++  java
  • .net 多线程同步的相关知识点

    在多线程开发中,共享对象的同步是经常遇到的问题,以下总结了C#中线程同步的几种技术:

    1,InterLocked原子操作

    Decrement(ref int location);递减1

    Add(ref int location1, int value);location1+value

    Increment(ref int location);递增1

    2,Mutex互斥锁

    WaitOne(int timeout);等待获取锁

    ReleaseMutex();释放锁,记得一定要释放,否则永远被阻塞

    3,SemaphoreSlim信号量

    SemaphoreSlim(int count);允许的并发线程数量

    Wait();等待

    Release();释放

    4,AutoRestEvent自动重置时间(内核模式)

    Set();从一个线程向另一个线程发送通知;

    WaitOne();等待通知

    5,ManaulResetEventSlim手动重置时间(混合模式)

    Wait();等待

    Set();通知

    Reset();重置

    6,CountDownEvent计数事件

    CountdownEvent(int count);通知计数

    Signal();计数(线程完成一定调用)

    Wait();等待

    Dispose();释放

    7,Barrier

    Barrier(int participantCount, Action<Barrier> postPhaseAction);多个线程同步,回调Action

    SignalAndWait();执行回调

    8,ReaderWriterLockSlim读写锁

    EnterReadLock();获取读锁(可共享读)

    ExitReadLock();释放读锁

    EnterUpgradeableReadLock();获取读锁(可升级到写锁);

    ExitUpgradeableReadLock();释放升级读锁

    EnterWriteLock();获取写锁(其他线程不可读写)

    ExitWriteLock();释放写锁

    9,SpinWait自旋等待(混合模式)

    SpinOnce();自旋

  • 相关阅读:
    链表
    链式学习法:提升技术深度
    数组
    写点什么
    7 天掌握算法面试必考知识点: 作业安排及如何提交
    创建Mac OS root账户
    正则表达式匹配及替换
    Xcode 10 之New Build System & Legacy Build System 旧版构建系统
    性能指标:TPS、QPS、RT、吞吐量
    Objective-C和Swift语言特性
  • 原文地址:https://www.cnblogs.com/l1pe1/p/8302920.html
Copyright © 2011-2022 走看看