并发(Concurrency) 并发是指多个任务交替执行的过程,看起来好像同时进行了多个任务,但实际上只有一个任务在一个时刻运行。
换句话说,多个任务共同使用同一个资源,在某一个时刻只有一个任务能够使用该资源,而其他任务则被阻塞等待。
以下是一个简单的并发示例:
static void Main(string[] args) {
Task task1 = new Task(() => {
for (int i = 0; i < 10; i++) {
Console.WriteLine("Task1: " + i);
}
});
Task task2 = new Task(() => {
for (int i = 0; i < 10; i++) {
Console.WriteLine("Task2: " + i);
}
});
task1.Start();
task2.Start();
Console.ReadKey();
}
建了两个 Task
对象,分别表示两个任务,并分别执行它们。由于这两个任务共享控制台资源,因此在任何时候都只能执行其中一个任务,另一个任务将会被阻塞。
并行(Parallelism) 并行是指在同一时刻运行多个任务,各个任务之间相互独立,且可以同时使用不同的资源,提高了任务的效率。换句话说,实现并行的方式是为每个任务提供自己独立的资源,在同一时刻运行多个任务。
以下是一个简单的并行示例:
static void Main(string[] args) {
Parallel.Invoke(
() => Console.WriteLine("Task1"),
() => Console.WriteLine("Task2"),
() => Console.WriteLine("Task3")
);
Console.ReadKey();
}
使用 Parallel.Invoke()
方法调用了三个独立的任务,由于这些任务互不依赖,因此可以同时执行,提高了程序的效率。
总结:如果你想让任务尽可能地快速完成,那么就应该用并行技术。
如果你只关心如何在多个任务之间共享资源,那么就需要使用并发技术。