不以物喜,不以己悲

C# Barrier简单介绍

C# Barrier简单介绍

Barrier的注释为:

使多个任务能够采用并行方式依据某种算法在多个阶段中协同工作。

代码示例:

 static void Main(string[] args)
 {
     Barrier barrier = new Barrier(4, it => {
         Console.WriteLine("再次集结,友谊万岁,再次开跑");
     });
     string[] names = { "张三", "李四", "王五", "赵六" };
     Random random = new Random();
     foreach(string name in names)
     {
         Task.Run(() => {
             Console.WriteLine($"{name}开始跑");
             int t = random.Next(1, 10);
             Thread.Sleep(t * 1000);
             Console.WriteLine($"{name}用时{t}秒,跑到友谊集结点");
             barrier.SignalAndWait();
             Console.WriteLine($"友谊万岁,{name}重新开始跑");
         });
     }
     Console.ReadKey();
 }

执行结果为:

张三开始跑
李四开始跑
王五开始跑
赵六开始跑
王五用时4秒,跑到友谊集结点
赵六用时6秒,跑到友谊集结点
张三用时7秒,跑到友谊集结点
李四用时7秒,跑到友谊集结点
再次集结,友谊万岁,再次开跑
友谊万岁,李四重新开始跑
友谊万岁,王五重新开始跑
友谊万岁,赵六重新开始跑
友谊万岁,张三重新开始跑

简的来说,假定有一个4人参加的友谊赛,4人开始跑,有的人跑的快,有的人跑的慢,但是都会在SignalAndWait处停下来,等4个人都到达SignalAndWait处后,又都开始继续往下执行了。

posted @   这种人  阅读(1797)  评论(1编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
历史上的今天:
2018-10-15 禅道使用规范
点击右上角即可分享
微信分享提示