中文字幕精品亚洲无线码二区,国产黄a三级三级三级看三级,亚洲七七久久桃花影院,丰满少妇被猛烈进入,国产小视频在线观看网站

C#~異步編(bian)程再續(xu)~大(da)叔所(suo)理解的并行編(bian)程(Task&Parallel)

返回目錄

并(bing)行(xing)這(zhe)個(ge)概念出(chu)自.net4.5,它(ta)(ta)被封(feng)(feng)裝在(zai)System.Threading.Tasks命名空間里,主要提供一些線程(cheng),異步的方法,或者說(shuo)它(ta)(ta)是對之前Thread進行(xing)的二次封(feng)(feng)裝,為的是讓開發人員更方便的調用(yong)它(ta)(ta),對于異步與多線程(cheng)我們在(zai)之前的幾講(jiang)里已經(jing)介(jie)紹過了,今天主要說(shuo)說(shuo)并(bing)行(xing),并(bing)行(xing)也可(ke)以(yi)叫(jiao)并(bing)行(xing)計算,即對于一個(ge)大任務,使用(yong)多個(ge)線程(cheng)去計算它(ta)(ta),這(zhe)可(ke)以(yi)充分(fen)發揮多核CPU的優勢,可(ke)以(yi)說(shuo)是大事所(suo)趨!

先看一下并行編程(并行計算)的圖像

對于兩個任務,任務1執行需要1秒,任務2執行需要3秒,那么,如果順序執行,它需要的時間為4秒(1+3),而如果是(shi)并(bing)行(xing)編程,那就運行(xing)時間為(wei)3秒,即(ji)(1和3一起運行(xing),取最長的時間),這就是(shi)并(bing)行(xing)計算(suan)的魅(mei)力!

下面看兩(liang)種并行的實現方(fang)式

一 Task實現的并行

      #region 并行Task
            Console.WriteLine(DateTime.Now);
            var task = Task.WhenAll(Task.Run(() => { Thread.Sleep(1000); }), Task.Run(() => { Thread.Sleep(2000); }));//多個(ge)task并行執行,不阻塞
            task.ContinueWith((ctw) =>//當task完成后,執行這(zhe)個回調(diao)
            {
                Console.WriteLine("并行完(wan)成" + DateTime.Now);
            });
            Console.WriteLine(DateTime.Now);
       #endregion

二 Parallel實現的并行

     #region 并行Parallel
            Console.WriteLine(DateTime.Now);
            Parallel.Invoke(() =>
            {
                Console.WriteLine(Thread.CurrentThread.ManagedThreadId);
                Thread.Sleep(1000);
            }, () =>
            {
                Console.WriteLine(Thread.CurrentThread.ManagedThreadId);
                Thread.Sleep(2000);
            });
            Console.WriteLine(DateTime.Now);
            Console.ReadKey();

          #endregion

通過上面的(de)圖(tu)我(wo)們可(ke)以看到,在進行(xing)并行(xing)測試時,運行(xing)時間為兩(liang)秒!

返回目錄

posted @ 2016-05-26 10:52  張占嶺  閱讀(6002)  評論(6)    收藏  舉報