多个线程交替执行的方法
如何实现多个线程交替执行。
这个例子中以三个线程交替执行为例子,使用AutoResetEvent来控制线程的中断。
using System; using System.Threading; using System.Threading.Tasks; using System.Windows.Forms; namespace 多个线程交替执行 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } //定义三个信号量,对三个信号量进行控制 static AutoResetEvent A_autoReset = new AutoResetEvent(false); static AutoResetEvent B_autoReset = new AutoResetEvent(false); static AutoResetEvent C_autoReset = new AutoResetEvent(false); void ShowA() { for (int i = 0; i < 10; i++) { A_autoReset.WaitOne(); Console.WriteLine("A" + i.ToString()); Thread.Sleep(200); B_autoReset.Set(); } } void ShowB() { for (int i = 0; i < 10; i++) { B_autoReset.WaitOne(); Console.WriteLine("B" + i.ToString()); Thread.Sleep(200); C_autoReset.Set(); } } void ShowC() { for (int i = 0; i < 10; i++) { C_autoReset.WaitOne(); Console.WriteLine("C" + i.ToString()); Thread.Sleep(200); A_autoReset.Set(); } } private void button1_Click(object sender, EventArgs e) { Task.Run(() => ShowA()); Task.Run(() => ShowB()); Task.Run(() => ShowC()); //new Action(ShowA).BeginInvoke(null, null); //new Action(ShowB).BeginInvoke(null, null); //new Action(ShowC).BeginInvoke(null, null); A_autoReset.Set(); } } }
执行结果:A0-B0-C0-A1-B1-C1 …… A9-B9-C9
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?