27.6 Parallel的静态For,Foreach和Invoke方法

        static void Main(string[] args)
        {
            //for (int i = 0; i < 10000; i++)
            //    DoWork(i);

            //Parallel.For(0, 10000, i => DoWork(i));

            //Mehtod1();
            //Mehtod2();
            //Mehtod3();

            Parallel.Invoke(() => Mehtod1(), () => Mehtod2(), () => Mehtod3());

            Console.ReadKey();
        }
        private static void DoWork(int a)
        {
            Console.WriteLine(a);
        }
        private static void Mehtod1()
        {
            Console.WriteLine("Mehtod1");
        }
        private static void Mehtod2()
        {
            Console.WriteLine("Mehtod2");
        }
        private static void Mehtod3()
        {
            Console.WriteLine("Mehtod3");
        }
        static void Main(string[] args)
        {
            var a = DirectoryBytes(@"I:\BaiduNetdiskDownload", "*.*", SearchOption.AllDirectories);
            Console.ReadKey();
        }
        private static long DirectoryBytes(string path, string searchPattern, SearchOption searchOption)
        {
            var files = Directory.EnumerateFiles(path, searchPattern, searchOption);
            long masterTotal = 0;
            ParallelLoopResult result = Parallel.ForEach<string, long>(files,
                () => { return 0; /*每个任务开始前,总计值都初始化为0*/},
                (file, loopState, index, taskLocalTotal) =>
                {
                    long fileLength = 0;
                    FileStream fs = null;
                    try
                    {
                        fs = File.OpenRead(file);
                        fileLength = fs.Length;
                    }
                    catch (Exception) {/*忽略拒绝访问过得文件*/ }
                    finally { if (fs != null) fs.Close(); }
                    return taskLocalTotal += fileLength;
                },
                taskLocalTotal => { Interlocked.Add(ref masterTotal, taskLocalTotal); }
                );
            return masterTotal;
        }

原文地址:https://www.cnblogs.com/kikyoqiang/p/10200937.html

时间: 2024-07-30 17:08:43

27.6 Parallel的静态For,Foreach和Invoke方法的相关文章

[转]PHP实现页面静态化的超简单方法

为什么要页面静态化? 1.动态文件执行过程:语法分析-编译-运行 2.静态文件,不需要编译,减少了服务器脚本运行的时间,降低了服务器的响应时间,直接运行,响应速度快:如果页面中一些内容不经常改动,动态页面静态化是非常有效的加速方法.(纯静态,伪静态还是需要PHP解释器的) 3.生成静态URL利于SEO,利于蜘蛛抓取和收录,有利于提升排名 优化页面响应时间方法 1.动态页面静态化 2.优化数据库 3.负载均衡 4.使用缓存等等 //动态页面静态化一般用于不经常改动的地方,频繁改动的地方一般不适用静

2014年5月27日中国大陆封锁Google事件解决的方法

2014年5月27日中国大陆封锁Google事件指自2014年5月27日后,Google公司的各项服务遭到疑似来自防火长城的恶意干扰,导致中国大陆地区的用户无法正常使用其服务的事件.自当天起,来自中国大陆的用户发现Google旗下的各个分站以及Google的其它服务(Google Play.Gmail.Google Docs等)均无法正常訪问与使用,甚至无法登陆Google账户.谷歌中国旗下的谷歌地图.谷歌翻译依然能够使用,但部分地区仍有连接被重置.连接超时等情况 最新谷歌镜像git网址:htt

VMWare中Linux虚拟机设置静态IP上网的设置方法

VMWare中Linux虚拟机设置静态IP上网的设置方法 标签: vmwareLinux虚拟机securecrt静态IP上网 2016-05-18 02:30 702人阅读 评论(0) 收藏 举报  分类: Linux 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 现在大部分人的家庭网络环境都是通过无线路由器为家里的电脑和手机提供网络. 在使用VMware安装Linux之后,默认使用的是DHCP连接网络. 但是如果使用类似 SecureCRT以SSH方式连接到虚拟机上的

Ubuntu静态IP Ubuntu上网配置方法

1. 执行代码 vim /etc/network/interfaces 2. 编辑内容 auto lo iface lo inet loopback      #网卡eth0的配置    auto eth0   iface eth0 inet static   address 192.168.1.30 #设置得静态IP   netmask 255.255.255.0   gateway 192.168.1.1   #dns-nameservers 8.8.8.8   #network 192.1

10、代码块、构造代码块、静态代码块及main方法之间的关系

1.普通代码块: 在方法或语句中出现在{}之间的类容就称为普通代码块,简称代码块.普通代码块和一般的语句执行顺序由他们在代码中出现的次序决定--“先出现先执行”,即顺序执行. 1 /*下面第一个类时合法的,而且下面的这两个类的运行顺序是一模一样的,但一般没人这么写*/ 2 public class Test { 3 { 4 System.out.println("1"); 5 } 6 int x=1; 7 System.out.println("2"); 8 { 9

springboot设置静态资源不拦截的方法

springboot设置静态资源不拦截的方法 springboot不拦截静态资源需配置如下的类: import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; import org.springframework.web.servlet.config.annotation.W

看看Parallel中高度封装的三个方法,Invoke,For和ForEach

说到.net中的并行编程,也许你的第一反应就是Task,确实Task是一个非常灵活的用于并行编程的一个专用类,不可否认越灵活的东西用起来就越 复杂,高度封装的东西用起来很简单,但是缺失了灵活性,这篇我们就看看这些好用但灵活性不高的几个并行方法. 一:Invoke 现在电子商务的网站都少不了订单的流程,没有订单的话网站也就没有存活的价值了,往往在订单提交成功后,通常会有这两个操作,第一个:发起 信用卡扣款,第二个:发送emial确认单,这两个操作我们就可以在下单接口调用成功后,因为两个方法是互不干

简单工厂模式(静态工厂)和工厂方法模式和抽象工厂模式

首先是简单工厂模式. 一句话描述就是用一个工厂类去封装new的工厂,返回新建的一个对象的引用.如果这个方法是静态的,就称之为静态工厂.一般来说这种做法很常见,尤其在一些JAVA工具类中.它的好处和坏处网上的分析都很多,但我觉得没必要分的这么细.最最最直接的好处是用起来简单,方便和不容易出错. 工厂方法模式则复杂一点.它的做法是在父类声明一个final方法用来真正被外部调用(在子类中被继承但是不允许覆盖).在这个方法中调用一个抽象方法去具体实现新建对象,可是这个抽象方法本身由子类实现. 举个例子就

C#如何静态调用C++中的方法(静态调用dll)

当我们想要在C#中使用C++项目的方法时,这个时候就可以通过调用C++项目的dll来实现,它有静态和动态调用两种方法. DLL(Dynamic Link Library)文件为动态链接库文件,又称“应用程序拓展”,是软件文件类型.在Windows中,许多应用程序并不是一个完整的可执行文件,它们被分割成一些相对独立的动态链接库,即DLL文件,放置于系统中.当我们执行某一个程序时,相应的DLL文件就会被调用.一个应用程序可使用多个DLL文件,一个DLL文件也可能被不同的应用程序使用,这样的DLL文件