亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

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

ParallelProgramming-TaskBase

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

Parallel.For/ForEach是數據層面的并行,本文所講的Task是將不同的操作并行執行,本文主要內容:

  1. Task的工作模型
  2. 初始化Task
  3. 完成Task
  4. 取消Task

一、Task工作模型

.Net中Task的工作模式是Fork/Join或者Master/Worker模式。核心思想是Master負責接受Client的請求,并且負責將請求分配給最終的Wroker,Worker執行完自己的工作后分別返回給Master。由Master匯總最終的結果并且返回給Client。

 

在.Net的Task并行編程中。一個Worker代表一個Task。

二、初始化Task

2.1 Parallel.Invoke

Parallel.Invoke是最簡單的辦法Task并行編程模式。

2.2 TaskFactory.StartNew

該方法會創建一個Task用于執行作為參數的方法。

 

    class TaskDemo    {        public void Action1()        {            Console.WriteLine("in action1");        }        public void Action2()        {            Console.WriteLine("in action2");        }        public void StartTasks()        {            var task1 = Task.Factory.StartNew(Action1);            var task2 = Task.Factory.StartNew(Action2);            Task.WaitAll(task1, task2);        }    }

以上代碼使用TaskFactory.StartNew方法創建了兩個Task。task1用于執行Action1,task2用于執行Action2.

StartNew只是創建了一個task,并將該task加入到一個工作隊列(work queue),當時該Task并沒有馬上執行,task什么時候執行是由TaskScheduler決定。TaskScheduler會將需要執行的task從中拿出來,然后才開始執行。(以上代碼使用的是默認TaskScheduler)

TaskScheduler很可能馬上執行,也有可能在未來的某一個特定時間點進行執行,取決于調度算法,以及CPU資源等。

三、Task的完成

剛開始說了。Task編程使用的是Master/Worker模式,該模式中最后一點是Worker最終會將結果返回給Master。由Master統一將結果進行匯總。在Task編程中有兩個方法:

  1. Task.WaitAll。等待所有的Task(worker)完成。
  2. Task.WaitAny,等待任何一個Task完成即可。

3.1 Task.WaitAll

上面2.2的代碼中已經使用了WaitAll,該方法將會等待兩個Action完成之后才會進行返回,將上面的方法做一點改變。

class TaskDemo    {        public void Action1()        {            Thread.Sleep(1000);            Console.WriteLine("in action1");        }        public void Action2()        {            Thread.Sleep(3000);            Console.WriteLine("in action2");        }        public void StartTasks()        {            var task1 = Task.Factory.StartNew(Action1);            var task2 = Task.Factory.StartNew(Action2);            Task.WaitAll(task1, task2);            Console.WriteLine("Finished");        }    }

WaitAll之后再打印出”Finished“,按照WaitAll的定義,Finished永遠是最后打印出來的字符串。

3.2 Task.WaitAny

將上面代碼的WaitAll修改成WaitAny

       public void StartTasks()        {            var task1 = Task.Factory.StartNew(Action1);            var task2 = Task.Factory.StartNew(Action2);            Task.WaitAny(task1, task2);            Console.WriteLine("Finished");        }

最終運行結果:

可以看出使用了WaitAny后,沒有等待Task2執行完畢,程序就回到了主線程,先打印出了Finished。

四、取消Task

4.1 取消流程

Task取消使用一個叫做coorperative cancellation的模型進行Task取消。主要使用CancellationTokenSource完成。該對象有一個CancellactionToken。當StartNew一個Task時候,可以將toker傳給被創建的task。當CancellationTokenSource調用Cancel后,Task對應的Token狀態將會變為取消(Canceled),Task的狀態也會變為取消。這時候如果Task還沒有啟動,Task將不會再執行任務。

 

當然最后在每個Task內部也對Token進行判斷,如果token已經取消,則不再執行當前Action(有些task可能在CancellactionToke被取消之前已經啟動了),修改一下執行圖:

4.2 演示代碼

   class TaskDemo    {        public void Action1(CancellationTokenSource cts)        {            if(cts.IsCancellationRequested)            {                return;            }            Console.WriteLine("in action1");        }        public void Action2(CancellationTokenSource cts)        {            Thread.Sleep(2000);            if (cts.IsCancellationRequested)            {                Console.WriteLine("action2 is canceled");                return;            }            Console.WriteLine("in action2");        }        public void StartTasks()        {            CancellationTokenSource cts = new CancellationTokenSource();            var task1 = Task.Factory.StartNew(() => Action1(cts), cts.Token);            var task2 = Task.Factory.StartNew(() => Action2(cts), cts.Token);            Task.WaitAny(task1, task2);            cts.Cancel();            Console.WriteLine("Finished");        }    }

4.3 運行結果

上面的運行結果有可能“action2 is canceled"這句話不會打印出來,因為有可能在Task2執行之前cts已經取消了。會進入流程圖中第一個If判斷點==》Not will run task


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久久久久999| 欧美老肥婆性猛交视频| 成人免费视频xnxx.com| 91精品视频专区| 欧美成人国产va精品日本一级| 亚洲天堂男人天堂| 日韩av一区在线| 91探花福利精品国产自产在线| 国产91热爆ts人妖在线| 欧美激情在线播放| 国产午夜精品视频免费不卡69堂| 日韩av影院在线观看| 精品中文视频在线| 色悠久久久久综合先锋影音下载| www.精品av.com| 午夜精品一区二区三区在线播放| 国产精品女人久久久久久| 国产精品中文久久久久久久| 亚洲视频精品在线| 另类视频在线观看| 国产区精品在线观看| 久久亚洲国产成人| 亚洲一区二区三区乱码aⅴ| 欧美色另类天堂2015| 国产香蕉精品视频一区二区三区| 91国产视频在线| 国产精品久久av| 97视频在线观看免费高清完整版在线观看| 久久这里有精品视频| 精品久久香蕉国产线看观看亚洲| 日本欧美在线视频| 一区国产精品视频| 久久99精品国产99久久6尤物| 91高潮在线观看| 黑人精品xxx一区| 亚洲国产成人精品电影| 国产在线观看91精品一区| 51午夜精品视频| 91精品国产高清自在线看超| 久久人人爽人人爽人人片av高清| 国产精品你懂得| 国产婷婷色综合av蜜臀av| 国产精品igao视频| 精品magnet| 国产精品国产三级国产aⅴ9色| 久久欧美在线电影| 91精品国产电影| 久久成人一区二区| 国产精品高清在线观看| 亚洲男女性事视频| 国产精品久久久久久久天堂| 欧美极度另类性三渗透| 日韩av片永久免费网站| 亚洲电影在线看| 国产成人一区二区在线| 中文字幕国产精品久久| 91亚洲国产精品| 国产精品 欧美在线| xxav国产精品美女主播| 亚洲综合在线播放| 亚洲国产精品成人va在线观看| 欧美性视频网站| 欧美孕妇毛茸茸xxxx| 97国产精品人人爽人人做| 色先锋资源久久综合5566| 久久99精品视频一区97| 国产成人精品日本亚洲| 国产丝袜精品第一页| 日韩在线观看免费| 久久99视频精品| 久久久久成人精品| 日韩av电影免费观看高清| 日韩亚洲成人av在线| 国产精品电影网| 午夜精品久久17c| 欧美午夜无遮挡| 美女精品视频一区| 成人av电影天堂| 亚洲性生活视频在线观看| 97福利一区二区| 欧美精品免费播放| 亚洲欧洲国产伦综合| 97香蕉久久超级碰碰高清版| 亚洲最新av网址| 色悠久久久久综合先锋影音下载| 亚洲成av人乱码色午夜| 欧美精品手机在线| 日本最新高清不卡中文字幕| 欧美久久精品一级黑人c片| 日本精品性网站在线观看| 欧美中文在线观看| 日韩欧美在线看| 丝袜一区二区三区| 亚洲精品一区久久久久久| 中文字幕在线看视频国产欧美| 日韩欧美中文免费| 欧美成人一二三| 国产视频精品一区二区三区| 亚洲一区二区福利| 欧美黑人视频一区| 国内揄拍国内精品少妇国语| 成人做爰www免费看视频网站| 成人免费网站在线| 国产精品自拍偷拍| 91香蕉嫩草神马影院在线观看| 欧美日韩电影在线观看| 成人日韩av在线| 92版电视剧仙鹤神针在线观看| 久久久精品国产亚洲| 亚洲综合色激情五月| 欧美另类极品videosbest最新版本| 日韩在线视频播放| 国产精品美腿一区在线看| 精品中文字幕在线2019| 正在播放欧美视频| 狠狠色狠狠色综合日日五| 亚洲自拍高清视频网站| 亚洲人成在线播放| 国产一区二区三区四区福利| 成人免费网站在线观看| 亚洲第一视频网| 欧美在线观看日本一区| 亚洲高清色综合| 亚洲伊人久久大香线蕉av| 色偷偷偷综合中文字幕;dd| 色偷偷噜噜噜亚洲男人的天堂| 亚洲a区在线视频| 欧美一级大胆视频| 在线视频一区二区| 91国内产香蕉| xxxxx91麻豆| 欧美黑人巨大精品一区二区| 97在线精品国自产拍中文| 在线观看精品国产视频| 国产成人激情视频| 久久久国产精品一区| 成人激情综合网| 欧美中文字幕在线播放| 亚洲福利精品在线| 欧美xxxwww| 亚洲天堂网在线观看| 亚洲精品资源在线| 91牛牛免费视频| 97久久久免费福利网址| 国产精品成人一区二区| 亚洲成色777777在线观看影院| 亚洲无限av看| 成人xvideos免费视频| 中文字幕亚洲欧美在线| 久久国产天堂福利天堂| 色爱av美腿丝袜综合粉嫩av| 欧美丰满老妇厨房牲生活| 91大神福利视频在线| 亚洲成人激情小说| 亚洲精品xxxx| 亚洲天堂开心观看| 久久琪琪电影院| 国产欧美日韩精品在线观看| 91中文在线视频| 国产噜噜噜噜噜久久久久久久久| 久久视频国产精品免费视频在线| 欧美电影在线观看| 国产亚洲欧洲高清一区| 日韩大陆欧美高清视频区|