【转】C#多线程下的调优

本文转载自博客园-包子wxl:https://www.cnblogs.com/wei325/p/16065342.html 一、原子操作 先看一段问题代码 /// <summary> /// 获取自增 /// </summary> public static void GetIncrement() { long result = 0; Console.WriteLine("开始计算"); //10个并发执行 Parallel.For(0, 10, (i) => { for (int j = 0; j < 10000; j++) { result++; } }); Console.WriteLine("结束计算"); Console.WriteLine($"result正确值应为:{10000 * 10}"); Console.WriteLine($"result 现值为:{result}"); Console.ReadLine(); } 这是多线程下,result的值不同步的原因。 1.基于Lock实现 平时大家用的最多的应该就是加锁了,同一时间,只有一个线程进入代码块。 实现代码: private static Object _obj = new object(); /// <summary> /// 原子操作基于Lock实现 /// </summary> public static void AtomicityForLock() { long result = 0; Console....

April 14, 2022 · 8 分钟 · Remo