C#并行編程-Task

什么是異步

同步和異步主要用于修飾方法。當一個方法被調用時,調用者需要等待該方法執行完畢并返回才能繼續執行,我們稱這個方法是同步方法;當一個方法被調用時立即返回,并獲取一個線程執行該方法內部的業務,調用者不用等待該方法執行完畢,我們稱這個方法為異步方法。

異步的好處在于非阻塞(調用線程不會暫停執行去等待子線程完成),因此我們把一些不需要立即使用結果、較耗時的任務設為異步執行,可以提高程序的運行效率。net4.0在ThreadPool的基礎上推出了Task類,微軟極力推薦使用Task來執行異步任務,現在C#類庫中的異步方法基本都用到了Task;net5.0推出了async/await,讓異步編程更為方便。

Task介紹

Task是在ThreadPool的基礎上推出的,我們簡單了解下ThreadPool。ThreadPool中有若干數量的線程,如果有任務需要處理時,會從線程池中獲取一個空閑的線程來執行任務,任務執行完畢后線程不會銷毀,而是被線程池回收以供后續任務使用。當線程池中所有的線程都在忙碌時,又有新任務要處理時,線程池才會新建一個線程來處理該任務,如果線程數量達到設置的最大值,任務會排隊,等待其他任務釋放線程后再執行。線程池能減少線程的創建,節省開銷。

MSDN的描述

Task類的表示單個操作不會返回一個值,通常以異步方式執行。

Task對象是一種的中心思想基于任務的異步模式首次引入.NETFramework 4 中。

因為由執行工作Task對象通常以異步方式執行線程池線程上而不是以同步方式在主應用程序線程中,可以使用Status屬性,并將IsCanceled, IsCompleted,和IsFaulted屬性,以確定任務的狀態。

大多數情況下,lambda 表達式用于指定該任務所執行的工作量。

對于返回值的操作,您使用Task類。

我對于Task的理解是這樣的,Task是FrameWork4引進的新功能,他和ConCurrent命名空間一起被引進,用來替代Thread的使用。

根據我的使用,個人覺得,他確實比Thead的功能要豐富一些。

代碼實現

var taskList = new List<Task>();taskList.Add(Task.Run(() =>{todo}));taskList.Add(Task.Run(() =>{todo}));var tf = new TaskFactory();var result = new ErrorDetectResponse();await tf.ContinueWhenAll(taskList.ToArray(), t =>{todo});

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/281026.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/281026.shtml
英文地址,請注明出處:http://en.pswp.cn/news/281026.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

手機照片丟失或誤刪如何恢復

手機照片丟失或誤刪如何恢復&#xff1f;我們每個人從剛出生就開始拍照片&#xff0c;一周歲照片、二周歲照片、三周歲照片等&#xff0c;因為照片可以記錄我們從小到大的模樣和變化。無意照片對我們每個人來說都很重要&#xff0c;如果手機突然壞以前的照片都找不到了怎么辦呢…

C++學習筆記(二)——交換函數(swap)

這次我們要透過一個簡單的函數swap深入理解函數傳參的本質以及在C中如何選擇傳參方式。 先來看第一段程序&#xff1a; void swap(int x, int y) {int temp y;y x;x temp; } 通過main函數的調用&#xff0c;我們發現x,y并未實現交換&#xff1a; int main() {int x 1;int y…

大數據背后是個萬億市場

2014年的GDP中消費占比已經超過了50%&#xff0c;標志著中國經濟正在向市場經濟轉型&#xff0c;消費占GDP50%&#xff0d;70%是中等發達國家向市場經濟過渡的一個表現&#xff0c;未來中國經濟增長最大的引擎應該來源于消費&#xff0c;特別是個人消費。中國正在經歷經濟結構調…

ipad iphone開發_如何將iPhone或iPad置于恢復模式

ipad iphone開發If your iDevice starts acting strangely and you’ve run through the gamut of normal troubleshooting fixes, Recovery Mode may be your answer. This lets you easily reset the device and re-install iOS using iTunes. 如果您的iDevice開始運行異常&a…

從三層架構說起,談談對歷史項目的小改造

web development項目背景說明最近接手一個 “老” 項目的需求修改&#xff0c;項目整體基于 .net core 3.1 平臺&#xff0c;以傳統的三層架構為基礎構建。了解需求后&#xff0c;逐步對原有項目框架進行大概的了解&#xff0c;主要是熟悉一些框架的開發規范&#xff0c;基本工…

C# message簡單實現窗口間信息接收與發送

剛接觸windows 不同程序 窗口消息傳遞&#xff0c;不理解IntPtr SendMessage(int hWnd, int msg, IntPtr wParam, IntPtr lParam)這函數怎么用&#xff1f;消息內容怎么傳遞過去&#xff0c;還遇到需要message結構體&#xff1f;IntPtr怎么用呢&#xff1f; 但實際只是用來傳個…

在Kubernetes集群上部署和管理JFrog Artifactory

JFrog Artifactory是一個artifacts倉庫管理平臺&#xff0c;它支持所有的主流打包格式、構建工具和持續集成&#xff08;CI&#xff09;服務器。它將所有二進制內容保存在一個單一位置并提供一個接口&#xff0c;這使得用戶在整個應用程序開發和交付過程中&#xff0c;能更易于…

已知思科ASA設備漏洞仍在其新版本中存在

近日&#xff0c;名為“Shadow Brokers(影子經紀人)”的黑客組織聲稱成功入侵了跟NSA相關的Equation Group(方程式組織)的計算機系統&#xff0c;并成功竊取到了大量的機密信息以及黑客工具。隨后&#xff0c;“Shadow Brokers”黑客組織將60%的泄漏文件在網上進行了公布&#…

Yii Listview

轉載于:https://www.cnblogs.com/xiong63/p/8546376.html

Git 操作筆記/pip換源

pip換源 阿里云的源,在cmd命令行中輸入上述命令即可 pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/ 還原commit 不可逆 1.git log2.選擇某次提交的commit ID3.使用git reset --hard commit ID 遠程查看與斷開 git remote -vgit remote rem…

.NET 7 的 AOT 到底能不能杠反編譯?

一&#xff1a;背景 1.講故事在B站&#xff0c;公眾號上發了一篇 AOT 的文章后&#xff0c;沒想到反響還是挺大的&#xff0c;都稱贊這個東西能抗反編譯&#xff0c;可以讓破解難度極大提高&#xff0c;可能有很多朋友對逆向不了解&#xff0c;以為用 ILSpy,Reflector,DnSpy 這…

google hdr+_更好的隱私權控制使Google+死了

google hdrEarlier this year, Google started a project to review third-party developer access to Google accounts through the use of APIs. It found a security breach surrounding Google, and is now shutting the service down, at least for consumers. 今年年初&a…

新0-Day漏洞或將給Linux桌面發行版帶來浩劫

Linux 的各個發行版都一直強調安全及其相關元素&#xff0c;比如防火墻、滲透測試、沙盒、無痕上網和隱私等等&#xff0c;但事實上可能并沒有想象中的那么安全。安全研究員 Chris Evans 公開了其發現的針對 Linux 桌面發行版的 0day 漏洞&#xff0c;利用特制的音頻文件入侵 L…

php中把美國時間轉為北京時間的自定義

我的服務器北京時間&#xff0c;php調用的時間&#xff1a; date.timezone "America/Chicago" 這是美國這邊的一個時間&#xff0c;有的時候跟北京相差13個小時&#xff0c;有的時候跟北京時間相差14個小時&#xff0c;所以很不好處理&#xff0c;現在php函數就能處…

C# DataTable筆記

文章轉載自http://www.cnblogs.com/Sandon/p/5175829.html 感謝博主Sandon。 為了方便以后編程查看&#xff0c;特把文章復制過來。 創建表 //創建一個空表 DataTable dt new DataTable(); //創建一個名為"Table_New"的空表 DataTable dt new DataTable("Tabl…

一份詳盡的利用 Kubeadm部署 Kubernetes 1.13.1 集群指北

2019獨角獸企業重金招聘Python工程師標準>>> 概 述 Kubernetes集群的搭建方法其實有多種&#xff0c;比如我在之前的文章《利用K8S技術棧打造個人私有云&#xff08;連載之&#xff1a;K8S集群搭建&#xff09;》中使用的就是二進制的安裝方法。雖然這種方法有利于我…

.NET性能優化-使用內存+磁盤混合緩存

我們回顧一下上一篇文章中的內容&#xff0c;有一個朋友問我這樣一個問題&#xff1a;我的業務依賴一些數據&#xff0c;因為數據庫訪問慢&#xff0c;我把它放在 Redis 里面&#xff0c;不過還是太慢了&#xff0c;有什么其它的方案嗎&#xff1f;其實這個問題比較簡單的是吧&…

最小生成樹詳解

注&#xff1a;本文算法使用鏈式前向星數據結構實現。學習鏈接&#xff1a;鏈式前向星-學習筆記 一、Prim算法 普通prim算法模板&#xff1a; //用前向星錄數據的時候記得把head初始化為-1 fill(dist,distLEN,MAX); memset(vis,0,sizeof vis); int ans0; dist[1]0; //如…

dropbox文件_Dropbox即將發布的擴展程序更新將添加更多文件編輯支持,包括Pixlr照片...

dropbox文件Dropbox is perhaps the best-known cloud storage platform for consumers, but it’s hoping to become something more. With an upcoming overhaul to its user tools, Dropbox will add more complex editing tools, in addition to what it already provides …

黑客竊取思科、IBM與甲骨文認證管理系統內的敏感數據

目前一套被思科、F5、IBM以及甲骨文等企業所廣泛使用的認證管理系統(即Credential Manager System)正面臨著數據泄露風險&#xff0c;其中的敏感數據也許已經被黑客們所獲取。 根據Pearson VUE(主營計算機測試方案開發與交付)發布的一項公告&#xff0c;某惡意軟件已經藏身于該…