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

迷茫
リリース: 2017-03-26 16:38:18
オリジナル
1226 人が閲覧しました

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 サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート