麓谷官网欢迎你访问长沙北大青鸟麓谷校区,支持你成为一个受人尊重的专业人才!
当前位置: 首页 > 青鸟知识 > net

C# volatile与lock

来源:长沙it培训学院|发布时间:2016-05-21|浏览量:

学IT,好工作

就读长沙岳麓职业培训学校

求学热线: 400-160-2868

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详解和写进和读取对照

下一篇:.NET初级工程师口试题之SQL篇

扫码关注微信公众号了解更多详情

跟技术大咖,专业导师一起交流学习

姓名
电话
Q Q

在线留言

请您把问题留下,我们为您提供专业化的解答!

QQ咨询
  1. 招生问答
  2. 热门点击
  3. 最新更新
  4. 推荐文章

关于我们

学校成就

就业保障

联系方式

联系电话:400-160-2868

在线报名

预约报名

备案号:湘ICP备2020021619号-1
地址:湖南省长沙市高新区麓谷麓松路679号 版权所有:长沙市岳麓职业培训学校

在线咨询
课程咨询 学费咨询 学费分期 入学测试 免费预约 来校路线
初中生 高中生 待业者
400-160-2868

在线客服