多线程 之锁
2021-08-06 03:57
标签:unsafe oid pre readonly rgba lock 设置 void new 1. 线程安全 排它锁用于确保同一时间只允许一个线程执行指定的代码段。主要的两个排它锁构造是lock和Mutex(互斥体)。其中lock更快,使用也更方便。而Mutex的优势是它可以跨进程的使用。 lock 排他锁 class ThreadUnsafe { static int _val1 = 1, _val2 = 1; static void Go() { if (_val2 != 0) Console.WriteLine (_val1 / _val2); _val2 = 0; } } 这个类不是线程安全的:如果Go方法同时被两个线程调用,可能会产生除数为零错误,因为可能在一个线程刚好执行完if的判断语句但还没执行Console.WriteLine语句时,_val2就被另一个线程设置为零。 下边使用lock解决这个问题: class ThreadSafe { static readonly object _locker = new object(); static int _val1, _val2; static void Go() { lock (_locker) { if (_val2 != 0) Console.WriteLine (_val1 / _val2); _val2 = 0; } } } 多线程 之锁标签:unsafe oid pre readonly rgba lock 设置 void new 原文地址:https://www.cnblogs.com/haigui-zx/p/14952890.html
上一篇:C#初始化器