C#多线程 为多核处理器而生的多线程方法Parallel.For和Parallel.ForEach

1.在.net4.0中,有了一个新的类库:任务并行库。它极大地简化了并行编程且内容丰富。这里仅介绍其中最简单的

Parallel.For循环和Parallel.ForEach循环。它们位于System.Threading.Tasks命名空间。它们是两个方法,这两个方法将迭代分别放在不同的处理器上并行处理,如果机器是多处理器或多核处理器,这样就会使性能大大提升。

2.例子用Parallel.For做计算,为数组赋值并打印,用Parallel.ForEach计算字符串数组每个元素的长度,运行结果:

3.代码:

using System;
using System.Threading.Tasks; //必须使用这个命名空间

namespace 为多核处理器而生的多线程方法Parallel.For和Parallel.ForEach
{
    class Program
    {
        static void Main(string[] args)
        {
            Parallel.For(0,5,i=>Console.WriteLine("The square of {0} is {1}", i , i*i));
            Console.WriteLine();

            const int maxValues = 5;
            int[] squares=new int[maxValues];
            Parallel.For(0, maxValues,i=>Console.WriteLine(i*i));
            Console.WriteLine();

            string[] squarsStr = new string[]{
                "We","are","the","kings","of","this",
                "beautiful","world","How","do","you","think"
            };
            Parallel.ForEach(squarsStr,
                i => Console.WriteLine(string.Format("{0} has {1} letters",i,i.Length)));
            Console.WriteLine();
        }
    }
}
时间: 2024-08-26 23:45:50

C#多线程 为多核处理器而生的多线程方法Parallel.For和Parallel.ForEach的相关文章

[py]你真的了解多核处理器吗? 了解多线程

你真的了解多核处理器吗? 1.双核≠双性能 多核不一定会使你的手机或电脑速度更快,但它将提高你的PC的整体性能,这是一个有所不同的细微的技术特色.多核处理器的性能提升并不是简单CPU核心的倍数,因为受到两(多)个核之间共享资源的拖累.比如双核性能只是单核的1.4-1.8倍,实际情况取决于具体的应用. 一个核拼命干活,拼命转啊转啊,其他核在看,最后温度不断上升然后蓝屏了.... 上图是个笑话,不过你可以用任务管理器可以看到并不是每个核的负载时均匀分配的. 这是为什么一个核转啊转啊,最后蓝屏的原因.

Dekker算法在多核处理器下的失效

Dekker algorithm是一种著名的并发编程的算法,Dekker算法的核心部分是一组对称的代码来访问一组共享变量,使得两个线程不可能同时进入临界区(只要cpu内存模型是遵循顺序一致性的),从而达到线程同步的目的.以下是该算法的一种实现: static volatile int flag1 = 0; static volatile int flag2 = 0; static volatile int turn = 1; static volatile int gSharedCounter

单核CPU、多线程、多核CPU和多个CPU

路.CPU.物理核.逻辑核和超线程概念 一个服务器主板可以插多个CPU称为多路,一个CPU可以有多个物理核.如果开启了超线程,一个物理核可以分成n个逻辑核(一般是2),n为超线程的数量. (1)路 “路”都是指服务器CPU的数量,也就是服务器主板上CPU插槽的数量. 通常有单路.两路.四路和多路. 单路指服务器支持1个CPU :两路指服务器支持2个CPU :四路指服务器支持4个CPU:多路指服务器支持多个CPU. (2)CPU( Central Processing Unit) CPU中央处理单

ARM多核处理器启动过程分析

说明: 该流程图按照代码执行时间顺序划分为4部分: 1.     Bootloader在图片上半部,最先启动: 2.     Kernel在图片下半部,由bootloader引导启动: 3.CPU0执行流程在图片左半部,bootloader代码会进行判断,先行启动CPU0: 4.  Secondary CPUs在图片右半部,由CPU唤醒 具体启动流程如下: 1.     在bootloader启动时,会判断执行代码的是否为CPU0,如果不是,则执行wfe等待CPU0发出sev指令唤醒.如果是CP

多核处理器的由来

多核处理器的由来-在21世纪初,能量强power wall无法再想以前一样增加CPU的时钟频率(因为功耗太大)-所以使用了多个小处理器核core取代单个大处理器来提高性能-每个完整的处理器都可以独立的执行程序 P = fCv^2f = 时钟频率C = 电容v = 电压 电容C类似于总面积,所以只要总面积不变,能耗就不会变,然后按照摩尔定律指数型的下降,性能就会提升

多核处理器基础SMP&AMP&BMP

多核处理器也称片上多核处理器(Chip Multi-Processor,CMP). 1.多核处理器的流行 多核出现前,商业化处理器都致力于单核处理器的发展,其性能已经发挥到极致,仅仅提高单核芯片的速度会产生过多热量且无法带来相应性能改善,但CPU性能需求大于CPU发展速度.尽管增加流水线提高频率,但缓存增加和漏电流控制不力造成功率大幅增加,性能反而不如之前低频率的CPU.功率增加,散热问题也严重了,风冷已经不能解决问题了. 那么新技术必须出现-多核处理器.早在1996年就有第一款多核CPU原型H

python多线程不能利用多核cpu,但有时候多线程确实比单线程快。

python 为什么不能利用多核 CPU  GIL 其实是因为在 python中有一个 GIL( Global Interpreter Lock),中文为:全局解释器锁.  1.最开始时候设计GIL是为了数据安全 python为了数据安全设计了这个 GIL. 2.每个 CPU在同一时间只能执行一个线程: (在单核 CPU下的多线程其实都只是并发,不是并行,并发和并行从宏观上来讲都是同时处理多路请求的概念. 但并发和并行又有区别,并行是指两个或者多个事件在同一时刻发生:而并发是指两个或多个事件在同

[转帖]AMD、英特尔为何争相走向胶水多核处理器?真相在此

AMD.英特尔为何争相走向胶水多核处理器?真相在此 胶水多核到底好不好?这个事不是简单一句话能说明的,今天的超能课堂里我们就来聊聊MCM胶水多核技术的过去及未来. 作者:孟宪瑞来源:超能网|2018-11-21 15:25 收藏 分享 从2017年到现在,不到两年时间里X86处理器行业的变化要比过去五年都要大,标志性事件就是AMD重返高性能处理器市场,除了在桌面处理器力推8核16线程处理器之外,在服务器市场上还推出了32核64线程处理器,前不久更推出了7nm的64核128线程"罗马"处

[转]Java多线程干货系列—(一)Java多线程基础

Java多线程干货系列—(一)Java多线程基础 字数7618 阅读1875 评论21 喜欢86 前言 多线程并发编程是Java编程中重要的一块内容,也是面试重点覆盖区域,所以学好多线程并发编程对我们来说极其重要,下面跟我一起开启本次的学习之旅吧. 正文 线程与进程 1 线程:进程中负责程序执行的执行单元线程本身依靠程序进行运行线程是程序中的顺序控制流,只能使用分配给程序的资源和环境 2 进程:执行中的程序一个进程至少包含一个线程 3 单线程:程序中只存在一个线程,实际上主方法就是一个主线程 4