volatile和lock的使用场景

volatile:多个线程同时访问一个变量,CLR为了效率,允许每个线程进行本地缓存,这就导致了变量的不一致性。volatile就是为了解决这个问题,volatile修饰的变量,不允许线程进行本地缓存,每个线程的读写都是直接操作在共享内存上,这就保证了变量始终具有一致性。

lock:多个线程同时访问一个代码块,使用lock 修饰该代码块,同时只能有一个线程访问,其余线程进行排队等待。

原文地址:https://www.cnblogs.com/highfly2012/p/4001799.html