最新开班
课程名称 报名截止 报名人数
高中起点学习班 即将开班 热招中
企业委培订制班 即将开班 热招中
私人名师辅导班 即将开班 热招中
待业速找工作班 即将开班 热招中
专家大课堂
accp
accp
男生
女生学什么好?女生学什么有前途?
高中落榜怎么办?高中生可以学软件么?
专职、再就业,让你的生涯不再与苦累相伴。
联系方式
地图

免费咨询:400-696-8028

报名电话:0731-88122069

学校地址:长沙市开福区金霞跨境产贸城北大青鸟校区

C# volatile与lock

 *、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。


二、C#中lock

 

1、lock 关键字将语句块标记为临界区,方法是获取给定对象的互斥锁,执行语句,然后释放该锁。此语句的形式如下:

Object thisLock = new Object();lock (thisLock){    // Critical code section}
 

2、lock确保当*个线程位于代码的临界区时,另*个线程不进入临界区。如果其他线程试图进入锁定的代码,则它就会被阻止,直到该对象被释放。也就是说在用到临界资源,确保线程可以排队进入执行临界区中的方法。

 

3、lock的使用场景

多个线程同时访问*个代码块,使用lock 修饰该代码块,强制多个线程进行排队,*个接*个的去访问。

 

1、通常,应避免锁定 public 类型,否则实例将超出代码的控制范围。做法是定义private 对象来锁定, 或 private static 对象变量来保护所有实例所共有的数据。

上一篇:WinForm - 会说话的程序
下一篇:ASP 五大高效提速技巧

长沙科泰
长沙科泰
长沙科泰IT教育