博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linq平行作業的例子
阅读量:4042 次
发布时间:2019-05-24

本文共 1711 字,大约阅读时间需要 5 分钟。

我們知道 可以使用linq的 AsParallel()啟用平行作業(Plinq),系統會自動啟用一定數量的線程去執行相應操作。它適用于有延時作業的操作。但記住:對于沒有延時操作的作業,還是老老實實用AsEnumrable()吧,因為線程 的分配,啟動,回收等反而增加了執行時間和資源。

例子1:平行作業。要注意 每次執行平行作業可能不會按順序

private void button7_Click(object sender, EventArgs e)        {
Stopwatch sw = Stopwatch.StartNew(); Console.WriteLine("begin"); var query = Enumerable.Range(1, 10).AsParallel().Select(o => {
//平行作業 //Console.WriteLine("作業 " + o.ToString ()); Thread.Sleep(1000); //模擬延時事件 return o; } ).ToArray (); Console.WriteLine("end"); Console.WriteLine("times:" + sw.ElapsedMilliseconds.ToString()); }

看下結果,耗時2秒多,開了8個線程 。

begin

end
times:2165
The thread 0x48e0 has exited with code 0 (0x0).
The thread 0x551c has exited with code 0 (0x0).
The thread 0x4378 has exited with code 0 (0x0).
The thread 0x4668 has exited with code 0 (0x0).
The thread 0x474c has exited with code 0 (0x0).
The thread 0x3634 has exited with code 0 (0x0).
The thread 0x419c has exited with code 0 (0x0).
The thread 0x57a0 has exited with code 0 (0x0).

例子2,不使用平行作業

private void button7_Click(object sender, EventArgs e)        {
Stopwatch sw = Stopwatch.StartNew(); Console.WriteLine("begin"); var query = Enumerable.Range(1, 10).AsEnumerable().Select(o => {
//平行作業 // Console.WriteLine("作業 " + o.ToString ()); Thread.Sleep(1000); //模擬延時事件 return o; } ).ToArray (); Console.WriteLine("end"); Console.WriteLine("times:" + sw.ElapsedMilliseconds.ToString()); }

結果耗時 10秒

begin
end
times:10018

转载地址:http://cimdi.baihongyu.com/

你可能感兴趣的文章
Variable property attributes or Modifiers in iOS
查看>>
NSNotificationCenter 用法总结
查看>>
C primer plus 基础总结(一)
查看>>
剑指offer算法题分析与整理(一)
查看>>
剑指offer算法题分析与整理(三)
查看>>
Ubuntu 13.10使用fcitx输入法
查看>>
pidgin-lwqq 安装
查看>>
mint/ubuntu安装搜狗输入法
查看>>
C++动态申请数组和参数传递问题
查看>>
opencv学习——在MFC中读取和显示图像
查看>>
retext出现Could not parse file contents, check if you have the necessary module installed解决方案
查看>>
Matlab与CUDA C的混合编程配置出现的问题及解决方案
查看>>
如何将PaperDownloader下载的文献存放到任意位置
查看>>
C/C++中关于动态生成一维数组和二维数组的学习
查看>>
JVM最简生存指南
查看>>
Java的对象驻留
查看>>
JVM并发机制探讨—内存模型、内存可见性和指令重排序
查看>>
如何构建高扩展性网站
查看>>
微服务架构的设计模式
查看>>
持续可用与CAP理论 – 一个系统开发者的观点
查看>>