C# volatile与lock
来源:长沙it培训学院|发布时间:2016-05-21|浏览量:
1、C#中volatile
volatile是C#顶用于节制同步的关头字,其意义是针对法式中一些敏感数据,不答应多线程同时拜候,包管数据在任何拜候时辰,最多有一个线程拜候,以包管数据的完整性,volatile是润饰变量的润饰符。
1、volatile的应用场景
多个线程同时拜候一个变量,CLR为了效能,答应每一个线程中止当地缓存,这就致使了变量的纷歧致性。volatile就是为体会决这个标题,volatile润饰的变量,不答应线程中止当地缓存,每一个线程的读写都是直接支配在同享内存上,这就包管了变量不断具有分歧性。
2、volatile 关头字可应用于以下类型的字段
(1)、援用类型
(2)、整型,如 sbyte、byte、short、ushort、int、uint、char、float 和 bool。
(3)、具有整数基类型的罗列类型。
(4)、已知为援用类型的泛型类型参数。
(5)、不克不及将局部变量声明为 volatile。
2、C#中lock
1、lock 关头字将语句块标识表记标帜为临界区,方式是取得给定对象的互斥锁,实行语句,然后释放该锁。此语句的形势以下:
Object thisLock = new Object();lock (thisLock){ // Critical code section}
2、lock确保当一个线程位于代码的临界区时,另外一个线程不进进临界区。若是其他线程试图进进锁定的代码,则它就会被制止,直到该对象被释放。也就是说在用莅临界资本,确保线程能够列队进进实行临界区中的方式。
3、lock的应用场景
多个线程同时拜候一个代码块,应用lock 润饰该代码块,强迫多个线程中止列队,一个接一个的往拜候。
1、但凡,应避免锁定 public 类型,不然实例将超越代码的节制范围。最好做法是界说 private 对象来锁定, 或 private static 对象变量来庇护一实在例所共有的数据。
上一篇:C#中Hashtable、Dictionary详解和写进和读取对照
扫码关注微信公众号了解更多详情
跟技术大咖,专业导师一起交流学习