C# 多線程、異步、同步之間的聯系與區別


C# 多線程、異步、同步之間的聯系與區別

假設這樣一個例子:
我想炒五樣菜,但是只有兩個爐子可以用,只能同時炒兩樣。

爐子就是線程,那同步跟異步怎么解釋比較好?

同時炒是不是算異步?

如果是的話,那什么情況算同步?

 其結果是:
假如5個菜分別是A,B,C,D,E  你有兩個爐子  只能同時炒A跟B    
所以剩下的CDE只能等AB炒完了才能開始 這個等待就是同步 我們叫做阻塞 即這個時候你只能做AB這兩個菜

假如你還有一台咖啡機, 你在炒AB的時候 把咖啡豆跟水放到咖啡機里打開開關 你就可以不用去管它了
我們說 我們新開了一個線程煮咖啡 但是注咖啡這個動作不妨礙你炒菜 所以煮咖啡這個線程是異步的 我們叫非阻塞

等到咖啡機 叮--- 告訴你咖啡煮好了 這個時候你去把咖啡拿出來 叮的這一聲 我們叫通知 通知主線程也就是你 我(咖啡機)的工作做完了, 你去把咖啡拿出來 我們叫回調 也就是 咖啡機線程完成之后 通知主線程要做的動作

簡單來講 會占用你的時間 讓你無法做其它事情的任務 叫同步任務(炒菜要專注 不然可能會糊鍋)。
那些不需要占用你的時間的任務 叫異步任務 咖啡機自己會把咖啡煮好 不需要你一直看着它
備注: 
所謂的多線程,意思就是說可以看起來像是同時在執行一系列的操作,而每個線程則負責維護自己的線程堆棧以及執行自己的代碼;
而異步則是基於多線程的。異步意思是說一個操作在執行時不會阻止其它的線程(或者主線程)工作,同步相反;但是如果異步操作會訪問到一些資源,而這些資源有可能會在一個線程在修改它的時候被另外一個線程讀取,於是這樣得出的結果就會完全坑爹了。所以說對這種資源的保護(叫做 線程安全或者資源獨占)是一個很重要的數據保護措施。
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM