在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
class Program { static void Main(string[] args) { var count = 0; var taskList = new Task[10]; Stopwatch sp = new Stopwatch(); sp.Start(); // 不要意外复制。每个实例都是独立的。 SpinLock spinLock = new SpinLock(); for (int i = 0; i < taskList.Length; i++) { taskList[i] = Task.Run(() => { bool lock = false; for (int j = 0; j < 10_000_000; j++) { spinLock.Enter(ref _lock); count++; spinLock.Exit(); lock = false; } }); } sp.Stop(); Task.WaitAll(taskList); Console.WriteLine($"完成! 耗时:{sp.ElapsedTicks}"); Console.WriteLine($"结果:{count}"); } } 注解如何:使用旋转锁进行低级别同步。 通常, 在持有自旋锁时, 应避免使用以下任何操作:
SpinLock SpinLock字段中存储实例。 |
请发表评论