第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

請問任務(wù)與線程差異

請問任務(wù)與線程差異

C#
尚方寶劍之說 2019-08-02 12:02:42
任務(wù)與線程差異我對并行編程很陌生。在.NET中有兩個類可用:Task和Thread.所以,我的問題是:這些類之間有什么區(qū)別?什么時候使用更好?Thread什么時候Task?
查看完整描述

3 回答

?
喵喔喔

TA貢獻(xiàn)1735條經(jīng)驗 獲得超5個贊

通常你聽到任務(wù)是一個比線程更高級的概念。..這就是這句話的意思:

  1. 不能使用ABORT/ThreadAbortedException,您應(yīng)該在定期測試“業(yè)務(wù)代碼”中支持取消事件token.IsCancellationRequested標(biāo)志(也避免長連接或無時間連接,例如到db,否則您將永遠(yuǎn)沒有機(jī)會測試此標(biāo)志)。出于類似的原因Thread.Sleep(delay)調(diào)用應(yīng)替換為Task.Delay(delay, token)打電話。

  2. 沒有線SuspendResume方法具有任務(wù)的功能。不能重用任務(wù)實例也一樣。

  3. 但是你得到了兩個新工具:

    a)延續(xù)

    // continuation with ContinueWhenAll - execute the delegate, when ALL// tasks[] had been finished; other option is ContinueWhenAnyTask.Factory.ContinueWhenAll( 
       tasks,
       () => {
           int answer = tasks[0].Result + tasks[1].Result;
           Console.WriteLine("The answer is {0}", answer);
       });

    b)嵌套/子任務(wù)

    //StartNew - starts task immediately, parent ends whith childvar parent = Task.Factory.StartNew(() => {
              var child = Task.Factory.StartNew(() =>
             {
             //...
             });
          },  
          TaskCreationOptions.AttachedToParent);
  4. 因此,系統(tǒng)線程對任務(wù)是完全隱藏的,但在具體的系統(tǒng)線程中仍然執(zhí)行任務(wù)的代碼。系統(tǒng)線程是用于任務(wù)的資源。當(dāng)然,在任務(wù)并行執(zhí)行的遮罩下仍然存在線程池。線程如何執(zhí)行新任務(wù)可能有不同的策略。另一個共享資源任務(wù)調(diào)度器關(guān)心它。一些問題任務(wù)調(diào)度器解決1)喜歡在同一個線程中執(zhí)行任務(wù)及其計算,以最小化切換成本。內(nèi)聯(lián)執(zhí)行2)更喜歡按已啟動的順序執(zhí)行任務(wù)。公平3)根據(jù)“任務(wù)活動的先驗知識”,在非活動線程之間更有效地分配任務(wù)。偷工..重要:一般來說,“異步”與“并行”不一樣。使用TaskScheduler選項,您可以在一個線程中同步執(zhí)行異步任務(wù)。為了表示并行代碼執(zhí)行,可以使用更高的抽象(比任務(wù)):Parallel.ForEachPLINQDataflow.

  5. 任務(wù)與C#異步/等待特性集成承諾模型,例如那里requestButton.Clicked += async (o, e) => ProcessResponce(await client.RequestAsync(e.ResourceName));執(zhí)行client.RequestAsync不會阻止UI線程。重要:引擎蓋下Clicked委托調(diào)用是絕對正常的(所有線程都由編譯器完成)。

這就足以做出選擇了。如果您需要支持調(diào)用傾向于掛起的遺留API的取消功能(例如,無時間連接),并且在本例中支持Thread.Abort(),或者如果您正在創(chuàng)建多線程背景計算,并且希望使用掛起/恢復(fù)優(yōu)化線程之間的切換,這意味著手動管理并行執(zhí)行-繼續(xù)使用線程。否則就去執(zhí)行任務(wù),因為它們會讓您輕松地操作它們中的組,將它們集成到語言中,并使開發(fā)人員更有效率-任務(wù)并行庫(TPL) .



查看完整回答
反對 回復(fù) 2019-08-03
  • 3 回答
  • 0 關(guān)注
  • 266 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號