线程安全问题:
lock的变量是引用类型,与线程操作无关,仅仅起一个标志位的作用,标志该内存是否正在被操作(不允许其他线程进行操作)
若两个线程锁同一个引用变量则不能并发,否之则能并发。
微软官方推荐
private static readonly object LOCK = new object();
lock原理:
lock(o)
{
代码块
}
相当于给代码块加了一个状态标志,如果标志位o是释放的则可以执行代码块,如果o是锁住的则需等待o变为释放状态才可以执行代码块,
并不是锁住代码块所访问的内存!!!
1