zoukankan      html  css  js  c++  java
  • 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;
            }
  • 相关阅读:
    JVM字节码(七)
    JVM字节码(六)
    JVM字节码(五)
    JVM字节码(四)
    JVM字节码(三)
    JVM字节码(二)
    JVM字节码(一)
    JVM类加载器(五)
    JVM类加载器(四)
    php之 人员的权限管理
  • 原文地址:https://www.cnblogs.com/kikyoqiang/p/10200937.html
Copyright © 2011-2022 走看看