深究并行编程Parallel类中的三大方法 (For、ForEach、Invoke)和几大编程模型(SPM、APM、EAP、TAP)

本文深入探讨了并行编程,对比了串行与并行编程的区别,详细阐述了C++中Parallel类的For、ForEach、Invoke方法,并通过实例展示了它们如何启动线程。此外,还介绍了常见的编程模型,如SPM、APM、EAP和TAP。

一. 并行编程

1. 区分串行编程和串行编程

①. 串行编程:所谓的串行编程就是单线程的作用下,按顺序执行。(典型代表for循环 下面例子从1-100按顺序执行)

②. 并行编程:充分利用多核cpu的优势,同时开启多个线程并行执行。(典型代表Parallel.For循环 下面例子从1-100无序执行)

代码实践:

 1   {
 2                 //1. 串行 (从1-100按顺序执行)
 3                 for (int i = 1; i < 100; i++)
 4                 {
 5                     Console.WriteLine(i);
 6                 }
 7                 //2. 并行 (从1-100无序执行)
 8                 Parallel.For(1, 100, (item) =>
 9                 {
10                     Console.WriteLine(item);
11                 });
12  }

结论:串行的代码按顺序依次输出,并行的代码无顺序输出。

2. 深究Parallel类中的方法 (For方法、ForEach方法、Invoke方法 这三个方法都是用来开启线程的)

(1). Invoke方法

a. 该方法的作用就是用来同时开启多个线程的。

b. 该方法有两个重载,主要涉及到两个参数,用来配置最大并行数(即线程数)和一个可变的Action委托数组(详见源码)。

<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值