首页 > 编程语言 > 详细

初探并行线程的三种写法

时间:2020-01-15 15:00:09      阅读:65      评论:0      收藏:0      [点我收藏+]

为什么想要了解并行程序的写法,源自上学期间有一个算法需要处理很多的地震道记录,在处理地震道的时候各道的数据是不关联的,

因此是两个for循环X,Y方向的地震道数据,然后计算,自然速度就慢了。

那么如果对于计算密集型的处理程序,并行计算就成了好的选择。

在C#中的三种写法:参考资料

        static void Main(string[] args)
        {
            //方法1
            Parallel.For(1, 11, x =>
            {
                Console.WriteLine(x);
            });
            Console.WriteLine("-------");
            //方法2
            var nums = Enumerable.Range(20, 30);
            Parallel.ForEach(nums, x =>
            {
                Console.WriteLine(x);
            });
            Console.WriteLine("-------");
            //方法3
            Parallel.Invoke(
                new Action(func1),//1
                new Action(func1),//2
                new Action(func1),//3
                new Action(func1),//4
                new Action(func1),//5
                new Action(func1),//6
                new Action(func1),//7
                new Action(func1)//8
            );
            //Console.ReadKey();
        }
        public static void func1()
        {
            long x = (long)Math.Pow(10, 10);
            for (int i = 0; i < x; i++)
            {
                Console.WriteLine("内部线程" + i);
            }
        }

这里比较灵活的写法是方法三:

使用的委托调用需要处理的函数,fuc1是一个计算耗时函数

我在例子中调用了8个函数,我的电脑是I7-7700

是八核,跑起来程序是直接CPU100%

如果注释掉其中的四行代码,只跑4个耗时函数

那么CPU的使用是50%

相比于单线程计算,并行确实能提高时间效率。

但是也要注意,不要执行太多耗时任务,否则对计算机压力太大。

End

初探并行线程的三种写法

原文:https://www.cnblogs.com/LeeSki/p/12188200.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!