手机
当前位置:查字典教程网 >编程开发 >C#教程 >使用Barrier来控制线程同步示例
使用Barrier来控制线程同步示例
摘要:可能的输出:复制代码代码如下:WorkingonThreadAWorkingonThreadBThreadBwillsleepfor10se...

可能的输出:

复制代码 代码如下:

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.

代码:

复制代码 代码如下:

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; }

}

}

【使用Barrier来控制线程同步示例】相关文章:

使用C# Winform应用程序获取网页源文件的解决方法

使用VS2010 C#开发ActiveX控件(上)

C#中使用split分割字符串的几种方法小结

使用C#开源文件实时监控工具Tail&TailUI介绍

解析使用enumerator模式简化异步操作的详解

C#中控制远程计算机的服务的方法

C#利用子线程刷新主线程分享教程

C#中使用IrisSkin2.dll美化WinForm程序界面的方法

用C#写的ADSL拨号程序的代码示例

通过C#调用cmd来修改服务启动类型

精品推荐
分类导航