ホームページ >バックエンド開発 >C#.Net チュートリアル >.NET 並列処理とマルチスレッド学習の基本の詳細な紹介

.NET 並列処理とマルチスレッド学習の基本の詳細な紹介

迷茫
迷茫オリジナル
2017-03-26 16:38:181257ブラウズ

1. 並列処理の予備トライアル:

public static void test()
        {
            for (int i = 0; i < 10000; i++)
            {
                Console.WriteLine(i);
            }
        }

        public static void test1()
        {
            for (int i = 0; i < 10000; i++)
            {
                Console.WriteLine(i + "aaaaaaaaaaaaaaa");
            }
        }

Call:

static void Main(string[] args)
        {
            Stopwatch sw = new Stopwatch();
            sw.Start();
//串行执行:
test();
test1();
//并行执行:
17Parallel.Invoke(test, test1);
19sw.Stop();
21Console.WriteLine("共耗费时间:");
23Console.WriteLine(sw.ElapsedMilliseconds / 1000+"s");
}

2. 例外のキャッチ: AggregateException

Parallel.ForEach(Partitioner.Create(1,20,5),(x,s)=>{
                //并行代码中自定义串行,第三个参数表示item1到item2之间的范围
                Console.WriteLine(x);
                for (int i = x.Item1; i < x.Item2; i++)
                {
                    if (i == 10) break;

                    Console.WriteLine(i);
                }
                s.Break();// 非常类似普通for循环中的break
                if (s.ShouldExitCurrentIteration)
                    return;
            });

4. 並列スケジュールの指定:

int[] arry = new int[10001];

            for (int i = 0; i < 10000; i++)
            {
                arry[i] = i;
            }
            try
            {

                Parallel.ForEach(arry, (x, s) =>
                {
                    Console.WriteLine(x);
                    if (sw.Elapsed.Seconds > 3)
                    {
                        throw new TimeoutException("操作超时");
                    }
                });
            }
            catch (AggregateException ex)
            {
                foreach (var item in ex.InnerExceptions)
                {
                    Console.WriteLine(item);
                }
            }

以上が.NET 並列処理とマルチスレッド学習の基本の詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。