非同步、多線程解惑

來源:互聯網
上載者:User

標籤:線程   block   tps   複雜度   它的   效果   簡單   等於   strong   

關於多線程和非同步相信不少人都有疑問,它們之間到底有什麼區別呢?

從知乎上看見一個比喻還是比較好理解的:

現在假設整個城市就只有1個火車,1個售票員,每個乘客諮詢售票員後需要思考1分鐘再決定買哪趟車的票。

非同步

在買票的人諮詢後,需要思考1分鐘,馬上靠邊站,但不用重新排隊,什麼時候想清楚可以立馬去跟售票員去買票。在該人站在旁邊思考的時候,後面的人趕緊上去接著買。這時候隊伍是很快的挪動的,沒有阻塞,售票員的最大化的效率。

多線程

火車站開n個視窗(但還是只有一個人售票),外面同時排n個隊,售票員回答諮詢者問題後,立馬馬上去下個視窗,然後繼續輪換到下個視窗.....哪個視窗的人決定好了,售票員立馬過去買給他。這個時候乘客比較簡單,但萬一那個隊伍有人思考半天糾結,後面的人就悲劇了。

搞清楚一個點

非同步呼叫並不是要減少線程的開銷,它的主要目的是讓調用方法的執行線程不需要同步等待在這個函數調用上,從而可以讓執行線程繼續執行它下面的代碼。與此同時, 系統會通過從ThreadPool中取一個線程來執行,協助我們將我們要寫/讀的資料發送到網卡.由於不需要我們等待, 我們等於同時做了兩件事情. 這個效果跟自己另外啟動一個線程來執行等待方式的寫操作是一樣的.但是, 非同步線程可以利用作業系統/.Net的線程池, 系統可以根據輸送量動態管理線程池的大小。

 

非同步、多線程調用本質

https://www.cnblogs.com/dream844/archive/2012/06/12/2546083.html

非同步IO操作

.NET Framework 4.5+之後,微軟提供了 await \async\task,使得我們在非同步編程的時候可以像同步一樣的邏輯思考,屏蔽了.NET Framework 4.5之前進行非同步編程的複雜度(前期都是非同步委託實現)

http://www.cnblogs.com/liqingwen/p/5922573.html

 

非同步、多線程解惑

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.