C# 异步编程 并行编程

目录

异步编程

1. Thread 

2. Task

3. async + await

并行编程

Parallel


本篇简单记录一下异步编程和并行编程,并以下图一个 Demo 来演示,源码地址我会公布在文章结尾。

  • 异步编程

个人觉得,异步无非就是不影响某个线程的情况下,在另外的线程里执行任务的过程。异步编程即多线程编程。C# 里多线程编程写法有很多种,这里记录三种。

  • 1. Thread 

Thread 算是比较常用的写法,出来时间也比较早,一般分带参数和不带参数两种写法:

Thread thread1 = new Thread(new ThreadStart(ThreadMethod1));//不带参数
thread1.Start();

Thread thread2 = new Thread(new ParameterizedThreadStart(ThreadMethod2));//带参数
thread2.Start(para);

某些时候,不能任由线程各自运行,比如需要等待所有线程结束后再去做某件事,这个时候就需要线程同步,同步方式有很多种,并不是本文重点,感兴趣的请自行百度。这里介绍一种事件等待方式,而这种方式就可以用到带参数的线程写法:

static void Main(string[] args)
{
	TestThread();
}

private static void TestThread()
{
	ManualResetEvent resetEvent = new ManualResetEvent(false);
	Thread thread1 = new Thread(new ParameterizedThreadStart(StartByThread));
	thread1.Start(resetEvent);
	WaitThread(resetEvent);
}

private static void StartByThread(object para)
{
	ManualResetEvent mre= (ManualResetEvent)para;
	for (int i = 1; i < 5; i++)
	{
		Console.WriteLine("Execute "+i.ToString());
		Thread.Sleep(1000);
	}
	mre.Set();
}

private static void WaitThread(ManualResetEvent e)
{
	var waits = new List<EventWaitHandle>();
	waits.Add(e);
	WaitHandle.WaitAll(waits.ToArray());
	Console.WriteLine("After Wait");
}

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值