目前正在公司學習Blazor,前輩寫的專案中就很多是非同步寫法 跟之前學的WebForm、WPF寫法上很不一樣。 為何Blazor大多都要寫到非同步方法呢? 於是上網查一下來解個惑~~ 1. Blazor 是一個基於WebAssembly的開發框架,與C#語言來建立交互式的Web應用程式。 2. Web應用程式中,非同步作法很常見,因為它們可以提高應用程式的效能和響應性。 3. Web應用程式通常需要與網絡進行交互,例如從伺服器加載資料或將資料傳送到伺服器。這些操作通常需要使用非同步方法來處理,以防止應用程式在等待IO操作完成時被阻塞。 --- ### 同步 可以想像在煮飯時,要先炒好當下這道菜才能備下一道菜的料,要等一個工作完成後才會執行下一個。 ### 非同步 在煮這道菜時,等菜熟的時候,可以先備下一道菜的料或拿個碗盤等待裝盤。尚未完成事件的同時,可以跑去做其他事情,不浪費等待時間。 目的:增加產能而非提高效能 <font color="blue">執行緒可以分工加速,但多建立一條執行緒,就會消耗約 1 MB 的記憶體來配置</font> ### 單執行緒 **<font color="red">從頭到尾只有一個 thread 可以執行程式</font>** :::danger ▲非同步並不會多生出一個執行緒!! ::: ### 多執行緒 **<font color="red">有兩個以上的 thread 能夠執行程式</font>** 若上方非同步例子,是由兩個人一起完成,如「A在煮這道菜時,等菜熟的時候,A先備下一道菜的料,B拿個碗盤等待裝盤。」,那就是多執行緒,不是非同步了!! 多執行緒的精神為分工加速,建立多個執行緒個別處理 --- 也推薦大家兩個網址: 第一個網址裡面圖片設計的一目了然:+1: https://ouch1978.github.io/blog/2022/09/25/understand-sync-async-and-multi-thread-with-one-pic 第二個: https://blog.opasschang.com/understand-csharp-asyn/ 歡迎大家指教糾正
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up