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();自旋

  • 相关阅读:
    Phonon
    qt 的mysql的库
    vwmare下安装fedora
    C++标准库
    C#命名空间
    用谷歌Chrome浏览器来当手机模拟器
    Javascript实现ECMAScript 5中的map、reduce和filter函数
    页面变灰实现方案
    jQuery检查元素是否在视口内(屏幕可见区域内)
    兼容浏览器的获取指定元素(elem)的样式属性(name)的方法
  • 原文地址:https://www.cnblogs.com/l1pe1/p/8302920.html
Copyright © 2011-2022 走看看