89ParallarLock
static void Main(string[] args) { int[] nums = new int[] { 1, 2, 3, 4 }; int total = 0; Parallel.For<int>(0, nums.Length, () => { return 1; }, (i, loopState, subtotal) => { subtotal += nums[i]; return subtotal; }, (x) => Interlocked.Add(ref total, x) ); Console.WriteLine("total={0}", total); Console.WriteLine(); SampleClass sample = new SampleClass(); Object obj = new object(); Parallel.For(0, 10000000, (i) => { lock (obj) { sample.SimpleAdd(); } }); Console.WriteLine(sample.SomeCount); Console.ReadKey(); } class SampleClass { public long SomeCount { get; private set; } public void SimpleAdd() { SomeCount++; } }
在Parallel中加锁要非常注意,长时间锁定某个共享资源所带来的同步性能损耗。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】