线程同步的几种方式

关于线程同步的几种方法:

 一、volatile关键字

  volatile是最简单的一种同步方法,当然简单是要付出代价的。它只能在变量一级做同步,volatile的含义就是告诉处理器, 不要将我放入工作内存, 请直接在主存操作我。(【转自www.bitsCN.com 】)因此,当多线程同时访问该变量时,都将直接操作主存,从本质上做到了变量共享。

public class A

{

private volatile int _i;

public int I

{

get { return _i; }

set { _i = value; }

}

}

 二、lock关键字

  lock是一种比较好用的简单的线程同步方式,它是通过为给定对象获取互斥锁来实现同步的。它可以保证当一个线程在关键代码段的时候,另一个线程不会进来,它只能等待,等到那个线程对象被释放,也就是说线程出了临界区。用法:

public void Function() 

{

object lockThis = new object (); 

lock (lockThis)

{

// Access thread-sensitive resources. 

}

}

三、使用线程安全类(Concurrent)

这些类可以单线程写入,多线程读取。有ConcurrentBagConcurrentSetConcurrentDictionary等等。

四、使用await async关键字来控制执行顺序。

原文地址:https://www.cnblogs.com/zhoushiya/p/12107590.html