源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

使用Barrier来控制线程同步示例

  • 时间:2021-02-05 15:45 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:使用Barrier来控制线程同步示例
可能的输出:
[u]复制代码[/u] 代码如下:
Working on Thread A Working on Thread B Thread B will sleep for 10 seconds. Thread A will sleep for 847 seconds. Working on Thread C Thread C will sleep for 26 seconds. Working on Thread D Thread D will sleep for 351 seconds. Working on Thread E Thread E will sleep for 249 seconds. All jobs have been done.
代码:
[u]复制代码[/u] 代码如下:
using System; using System.Threading; class BarrierDemo {     static Barrier _barrier = new Barrier (5, barrier => {             Console.WriteLine();             Console.WriteLine("All jobs have been done.");         });     static void Main()     {         Random r = new Random();         new Thread(Work).Start(new MyThreadArgs { ThreadId = "A",             WaitTimeCount = r.Next(1000) });         new Thread(Work).Start(new MyThreadArgs {ThreadId = "B",             WaitTimeCount = r.Next(1000) });         new Thread(Work).Start(new MyThreadArgs {ThreadId = "C",             WaitTimeCount = r.Next(1000) });         new Thread(Work).Start(new MyThreadArgs {ThreadId = "D",             WaitTimeCount = r.Next(1000) });         new Thread(Work).Start(new MyThreadArgs {ThreadId = "E",             WaitTimeCount = r.Next(1000) });     }     static void Work(object obj)     {         MyThreadArgs args = (MyThreadArgs) obj;         Console.WriteLine("Working on Thread " + args.ThreadId);         Console.WriteLine("Thread " + args.ThreadId +             " will sleep for " + args.WaitTimeCount + " seconds.");         Thread.Sleep(waitTime);         _barrier.SignalAndWait();     }     class MyThreadArgs     {         public string ThreadId { get; set; }         public int WaitTimeCount { get; set; }     } }
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部