日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

那些年我们一起追逐的多线程(Thread、ThreadPool、委托异步调用、Task/TaskFactory、Parallerl、async和await)

發布時間:2023/12/10 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 那些年我们一起追逐的多线程(Thread、ThreadPool、委托异步调用、Task/TaskFactory、Parallerl、async和await) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一. 背景

?  在剛接觸開發的頭幾年里,說實話,根本不考慮多線程的這個問題,貌似那時候腦子里也有沒有多線程的這個概念,所有的業務都是一個線程來處理,不考慮性能問題,當然也沒有考慮多線程操作一條記錄存在的并發問題,后面隨著處理的系統業務越來越復雜,多線程再也回避不了了,也就借此機會深入研究了一下.Net中的多線程的處理方案。

  發現在.Net領域中,多線程的處理大致經歷了這么幾個階段:Thread→ThreadPool→委托的異步調用→Task→TaskFactory→Parallerl→異步編程模型(async和await)。

  關注我博客的人會發現,早在2017年6月份的時候,就開始整理多線程問題了,大約用了6篇文章的來介紹了.Net中的線程的使用方法,主要是介紹相應類的實例方法的使用,有點幫助文檔的意思了哦,最近多線程使用的相當頻繁,借此機會重新結合一些實際業務系統介紹一下.Net領域的多線程問題,本次將整合原先的六篇文章(刪除或覆蓋更新)。

本質:? 充分發掘CPU的性能,把一些并沒有先后強依賴關系、且耗時代碼塊放到一個新的線程里去處理,那么原先按順序執行的業務就會變成并行執行,讓主線程繼續往后執行,節約了時間了,提高了效率。

下面補充一下多線程在時間和空間上的開銷:

(一). 時間上:

①:開啟或銷毀一個線程都會通知進出中的dll程序集,讓這些dll進行相應的操作。

②:時間片切換:4個邏輯處理器(不考慮Inter的超線程技術,一核對多個線程),同時并行只能處理4個線程,多余的休眠,很多時候,我們看似很多線程在并行執行,實際上是間歇性的串行。

《關于這個說法有異議的話,請留下您的見解,歡迎討論,請勿謾罵》

(二). 空間上:

①:用戶模式堆棧,一個線程分配1M的堆棧空間。

②:內核模式的堆棧,用戶模式的參數需要傳遞到內核模式。

③:線程的內核數據結構,會存放一下變量。

 

二. 概念的梳理

?1. 進程、線程和多線程

  進程:當一個程序開始運行時,它就是一個進程(或者多個,eg:游戲),進程包括運行中的程序和程序所使用到的內存和系統資源,而一個進程又是由多個線程組成。

  線程:線程是程序中的一個執行流,每個線程都有自己的專有寄存器(棧指針、程序計數器等),但代碼區是共享的,即不同的線程可以執行同樣的函數。

  多線程:多線程是指程序中包含多個執行流,即在一個程序中可以同時運行多個不同的線程來執行不同的任務,也就是說允許單個程序創建多個并行執行的線程來完成各自的任務。

2. 多線程的好處和弊端

  好處:可以提高CPU的利用率。在多線程程序中,一個線程必須等待的時候,CPU可以運行其它的線程而不是等待,這樣就大大提高了程序的效率。(犧牲空間資源,來換取時間)

  弊端:

  ①:線程也是程序,所以線程需要占用內存,線程越多占用內存也越多;(占內存多)

  ②:多線程需要協調和管理,所以需要CPU時間跟蹤線程;?(占cpu多)

  ③:線程之間對共享資源的訪問會相互影響,必須解決競用共享資源的問題;(多線程存在資源共享問題)

  ④:線程太多會導致控制太復雜,最終可能造成很多Bug。(管理麻煩,產生意外bug)

3. 何時建議使用多線程

  ①. 當主線程試圖執行冗長的操作,但系統會卡界面,體驗非常不好,這時候可以開辟一個新線程,來處理這項冗長的工作。

  ②. 當請求別的數據庫服務器、業務服務器等,可以開辟一個新線程,讓主線程繼續干別的事。

  ③. 利用多線程拆分復雜運算,提高計算速度。

4. 何時不建議使用多線程

  當單線程能很好解決,就不要為了使用多線程而用多線程。

5. 同步調用和異步調用

  ①單線程同步調用:方法從上而下一次執行,一步一步執行,有先后順序。

? ? ? ? ? ?

  ②異步調用(區別于異步方法):開啟新的線程去執行業務,主線程單獨執行,可以選擇是否等待子線程執行完后再執行

    

同步方法 VS 異步方法:?

  1. 一個誤區:異步方法指的是一些特有的方法(并不開啟新線程),它和開啟一個新的線程比如“很多情況下我們會說,開啟一個新的線程去異步調用”,這不是一回事,典型的異步方法,比如js 的ajax請求。

  2. 同步方法:我們平時封裝的一些普通方法大多數都是同步方法,同步方法典型的特點:就是在沒有得到方法的返回值或者該方法沒有執行完,該調用就需要在這等待,不能繼續執行。

  3. 異步方法:異步方法在調用后,調用這在沒有得到返回結果前,就可以繼續執行后續業務,異步方法通常是通過通知、回調的方式告訴調用者,無須消耗過多的性能。

舉例1:

  $.Post("url",{},function(data){? ? ?});

  $("#div1").html("");

這兩行代碼,第一行發送異步請求的時候,即使得到回調返回值,下面清空div1內容的操作同樣也將執行,Post就是異步方法。

舉例2:

  先封裝1個方法: function? Add(a,b){? 先休眠5s;? ?return a+b}

  調用:

  Add(1,2);

  $("#div1").html("");

這兩行代碼,Add方法就屬于同步方法,所以必須等5s后,Add方法執行完,才能執行下面清空div1內容的操作。

  總結:同步方法和異步方法的區別就是:是否需要等待返回結果,才能執行后續操作。

  

6. 異步多線程的三個特點

  ①:同步方法卡界面,原因是主線程被占用;開啟新線程去異步調用不卡界面,原因是計算交給了別的線程,主線程空閑.

  ②:同步方法慢,原因是只有一個線程計算;開啟新線程去異步調用快,原因是多個線程同時計算,但是更消耗資源,不宜太多.

  ②:異步多線程是無序的,啟動順序不確定、執行時間不確定、結束時間不確定.

?

三. 系列章節

?  第一節:復習委托,并且通過委托的異步調用開啟一個新線程和異步回調、異步等待。

?  第二節:深入剖析Thread的五大方法、數據槽、內存柵欄。

?  第三節:ThreadPool的線程開啟、線程等待、線程池的設置、定時功能。

?  第四節:Task的啟動的四種方式以及Task、TaskFactory的線程等待和線程延續的解決方案。

?  第五節:Task構造函數之TaskCreationOptions枚舉處理父子線程之間的關系。

?  第六節:深入研究Task實例方法ContinueWith的參數TaskContinuationOptions。

?  第七節:利用CancellationTokenSource實現任務取消和利用CancellationToken類檢測取消異常。

?  第八節:Task的各類Task<TResult>返回值以及通用線程的異常處理方案。

?  第九節:深究并行編程Parallel類中的三大方法 (For、ForEach、Invoke)和幾大編程模型(SPM、APM、EAP、TAP)

?  第十節:利用async和await簡化異步編程模式的幾種寫法

?  第十一節:深究用戶模式鎖的使用場景(異變結構、互鎖、旋轉鎖)

?  第十二節:深究內核模式鎖的使用場景(自動事件鎖、手動事件鎖、信號量、互斥鎖、讀寫鎖、動態鎖)

?  第十三節:實際開發中使用最多的監視鎖Monitor、lock語法糖的擴展、混合鎖的使用(ManualResetEvent、SemaphoreSlim、ReaderWriterLockSlim)

?  第十四節: 介紹四大并發集合類并結合單例模式下的隊列來說明線程安全和非安全的場景及補充性能調優問題。

?  第十五節:深入理解async和await的作用及各種適用場景和用法

?  第十六節:

?  第十七節:

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的那些年我们一起追逐的多线程(Thread、ThreadPool、委托异步调用、Task/TaskFactory、Parallerl、async和await)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: sm在线看| 黄色一级片在线看 | 日本三级影院 | 日日精 | 精品一区免费观看 | 成年人免费视频观看 | 麻豆传媒映画官网 | 九九精品免费 | 日韩av在线网站 | 丁香婷婷网 | 欧美日韩一区二区电影 | 国产小视频网址 | 久久神马影院 | 一区二区三区不卡在线 | 亚洲av无码一区二区三区性色 | 国产精品久久久久三级无码 | 一区二区三区国产av | 第色| 看日本毛片 | 欧美精品123区| 亚洲欧洲中文字幕 | 日韩欧美福利视频 | 2021av在线 | 老司机av导航 | 青青草精品视频 | 久久精品一本 | 激情宗合网 | 欧美丰满老妇 | 中文字幕 日韩有码 | 日韩夜夜高潮夜夜爽无码 | 女人18毛片一区二区三区 | 日本免费不卡 | 丝袜脚交国产在线观看 | 欧美视频一二区 | 国内精品人妻无码久久久影院蜜桃 | 黄色一集片 | 国内精品久久久久久 | 国产午夜精品一区二区理论影院 | 亚洲视频免费播放 | 欧洲亚洲一区二区 | 久久影片| 涩涩涩涩av | 三级特黄 | 亚洲精品v天堂中文字幕 | 天天射天天搞 | 麻豆精品视频在线 | 香蕉视频免费网站 | 日韩一级片中文字幕 | 亚洲色图欧美在线 | 91在线视频导航 | 蜜臀av性久久久久蜜臀av麻豆 | 亚洲成人自拍偷拍 | 精品无码一区二区三区的天堂 | 国产区在线视频 | 毛片基地免费 | 亚洲精品人人 | 国产熟妇另类久久久久 | 中文字幕乱码一区 | 熟女少妇一区二区三区 | 欧美一区二区在线免费观看 | 综合激情久久 | 色老头一区二区三区 | 日韩av在线看 | 日韩毛片大全 | 久久久久久久久久久久国产 | 久草婷婷| 国产亚洲精品久 | 成人av影视在线 | 欧洲视频一区 | 人妻妺妺窝人体色www聚色窝 | 黄色av网站在线播放 | 国产玖玖视频 | 黄色欧美一级片 | 欧美日韩久久 | 欧美精品xxxxx | 久久婷婷色综合 | 97成人在线观看 | 奇米影视盒 | 2019天天操 | 不卡一区二区在线观看 | 性欧美ⅹxxxx极品护士 | 色丁香久久| 1024金沙人妻一区二区三区 | 久久久久亚洲AV成人无码国产 | 秋霞成人网| 国产一区二区在线免费观看 | 成人美女在线观看 | 日本一区二区三区四区五区 | 初音未来打屁股 | 国产美女久久 | 欧美视频xxxx | 亚洲精品乱码久久久久久 | 与子敌伦刺激对白播放的优点 | 欧美日韩亚洲国产另类 | 日本亲与子乱xxx | 亚洲最大黄网 | 青青草一区二区 | 黄色精品在线观看 | 91麻豆精品国产午夜天堂 |