C# 如何控制多线程同步执行
2023-12-14 18:33:45
写在前面
使用Task类来控制多线程的同步执行,可应用于多任务分发执行后,再做归并处理。Tas既拥有线程池的优点,同时也解决了使用ThreadPool不易控制的弊端;可以非常简便并可靠地实现多线程的顺序执行。
代码实现
public class ThreadTester
{
public static void ThreadTest01()
{
var task01 = new Task(() =>
{
Thread.Sleep(1000);
Console.WriteLine("task01 执行完成");
});
// 以同步方式执行
task01.RunSynchronously();
Console.WriteLine("第一阶段主线程执行完成");
var task02 = new Task(() =>
{
Thread.Sleep(1300);
Console.WriteLine("task02 执行完成");
});
task02.Start();
var task03 = new Task(() =>
{
Thread.Sleep(800);
Console.WriteLine("task03 执行完成");
});
task03.Start();
// 执行等待以保证同步
task02.Wait();
task03.Wait();
Console.WriteLine("第二阶段主线程执行完成");
var task04 = new Task(() =>
{
Thread.Sleep(1500);
Console.WriteLine("task04 执行完成");
});
task04.Start();
var task05 = new Task(() =>
{
Thread.Sleep(600);
Console.WriteLine("task05 执行完成");
});
task05.Start();
// 执行等待以保证同步
Task.WaitAll(new Task[] { task04, task05 });
Console.WriteLine("第三阶段主线程执行完成");
var task06 = new Task(() =>
{
Thread.Sleep(1200);
Console.WriteLine("task06 执行完成");
});
task06.Start();
var task07 = new Task(() =>
{
Thread.Sleep(100);
Console.WriteLine("task07 执行完成");
});
task07.Start();
// 全部完成后再执行
Task.WhenAll(new Task[] { task06, task07 }).ContinueWith((t) =>
{
Thread.Sleep(200);
Console.WriteLine("第四阶段最后完成");
});
Console.WriteLine("第四阶段主线程执行完成");
Console.ReadKey();
}
}
执行结果?
文章来源:https://blog.csdn.net/rjcql/article/details/134889013
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!