麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

ParallelProgramming-Parallel.Invoke

2019-11-14 13:49:26
字體:
來源:轉載
供稿:網友

本文主要介紹Parallel.Invoke的使用。

一、使用例子

 class ParallelInvoke    {        public void Action1()        {            Thread.Sleep(3000);            Console.WriteLine("in action1");        }        public void Action2()        {            Thread.Sleep(3000);            Console.WriteLine("in action2");        }        public void ParallelAction()        {            Parallel.Invoke(() => Action1(), () => Action2());        }    }
 class PRogram    {        static void Main(string[] args)        {            var stopwatch = Stopwatch.StartNew();            stopwatch.Start();            new ParallelInvoke().ParallelAction();            Console.WriteLine(stopwatch.ElapsedMilliseconds);            Console.Read();        }    }

二、 運行截圖

上面的action1和action2如果并行執行至少需要3000*2毫秒,但是使用Invoke,內部并行執行,時間減半。

三、 分析

Parallel.Invoke是最簡單的并行編程模型,用于并行執行多個互不相干的方法。有幾點需要注意

  1. 只有當所有的Action執行完成后Invoke才會返回(WaitAll)
  2. 在執行過程中有其中一個Action發生異常,Invoke不會馬上拋出異常,而是等所有的Action完成以后再次拋出異常

四、one more thing

4.1 MaxDegreeOfParallelism

Parallel.Invoke可以通過指定ParallelOption指定最大并行數量。

    public void ParallelAction()        {            Parallel.Invoke            (                new ParallelOptions()                {                    MaxDegreeOfParallelism = 1,                },                () => Action1(),                () => Action2()            );        }

上面的代碼設置成了1,其實就是串行執行了。

執行時間如下。

 

 

4.2 CancellationSourceToken

同樣可以通過ParallelOption指定CancellationSourceToken,多個并行任務之間可以協調取消

   class ParallelInvoke    {        public void Action1(CancellationTokenSource cts)        {            cts.Cancel();            Thread.Sleep(3000);            Console.WriteLine("in action1");        }        public void Action2(CancellationTokenSource cts)        {            if (cts.IsCancellationRequested)            {                return;            }            Thread.Sleep(3000);            Console.WriteLine("in action2");        }        public void ParallelAction()        {            CancellationTokenSource cts = new CancellationTokenSource();            Parallel.Invoke            (                new ParallelOptions()                {                    CancellationToken = cts.Token,                },                () => Action1(cts),                () => Action2(cts)            );        }

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 欧美性a视频 | www.guochan | 成人一级视频在线观看 | 亚洲福利视 | 大号bbwassbigav头交 | 国产精品久久久久久久久久久久久久久 | 日本一区二区三区视频在线 | 国产一级在线免费观看 | 无遮挡一级毛片视频 | chinese乱子伦xxxx国语对白 | 91看片欧美| 免费观看一区二区三区视频 | 国产精品99久久久久久大便 | 深夜福利视频免费观看 | japanese massage tube | 久久影库 | 黄色片网站在线播放 | 欧美激情精品久久久久久久久久 | 斗破苍穹在线观看免费完整观看 | 亚洲午夜视频在线 | 国产1区在线观看 | 亚洲精品一区二区三区在线看 | 国产亚洲精品yxsp | 欧美一级高潮 | 色网站免费观看 | 色猫av| 欧美激情首页 | 久久99亚洲精品久久99果 | 国产精品亚洲综合 | 国产91精品欧美 | 精品一区二区在线观看视频 | 国产1区2区3区在线观看 | 亚洲导航深夜福利涩涩屋 | 久久久久久久一区二区三区 | 欧美乱论 | 国产午夜免费不卡精品理论片 | 色播av在线| 91小视频在线观看免费版高清 | 成人免费乱码大片a毛片视频网站 | 欧美成人免费在线视频 | 杏美月av|