Day 1357:併發
來自王寶令的專欄
要寫好併發程序,首先要知道併發程序的問題在哪裏,只有確定了“靶子”,纔有可能把問題解決,畢竟所有的解決方案都是針對問題的。併發程序經常出現的詭異問題看上去非常無厘頭,但是深究的話,無外乎就是直覺欺騙了我們,只要我們能夠深刻理解可見性、原子性、有序性在併發場景下的原理,很多併發 Bug 都是可以理解、可以診斷的。在介紹可見性、原子性、有序性的時候,特意提到緩存導致的可見性問題,線程切換帶來的原子性問題,編譯優化帶來的有序性問題,其實緩存、線程、編譯優化的目的和我們寫併發程序的目的是相同的,都是提高程序性能。但是技術在解決一個問題的同時,必然會帶來另外一個問題,所以在採用一項技術的同時,一定要清楚它帶來的問題是什麼,以及如何規避。
要寫好併發程序,首先要知道併發程序的問題在哪裏,只有確定了“靶子”,纔有可能把問題解決,畢竟所有的解決方案都是針對問題的。併發程序經常出現的詭異問題看上去非常無厘頭,但是深究的話,無外乎就是直覺欺騙了我們,只要我們能夠深刻理解可見性、原子性、有序性在併發場景下的原理,很多併發 Bug 都是可以理解、可以診斷的。在介紹可見性、原子性、有序性的時候,特意提到緩存導致的可見性問題,線程切換帶來的原子性問題,編譯優化帶來的有序性問題,其實緩存、線程、編譯優化的目的和我們寫併發程序的目的是相同的,都是提高程序性能。但是技術在解決一個問題的同時,必然會帶來另外一個問題,所以在採用一項技術的同時,一定要清楚它帶來的問題是什麼,以及如何規避。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
聊聊大模型"打字機"效果的背後技術——SSE
又見阿郎
2024-03-28 14:33:12
salesforce零基礎學習(一百三十五)項目中的零碎知識點小總結(七)
zero.zhang
2024-03-28 14:29:42
.NET開源免費、功能強大的 Windows 截圖錄屏神器
追逐時光
2024-03-28 14:22:22
sqlite安裝及sqlite3對Data Base File的簡單操作及navicat操作
冰臨神下
2024-03-28 14:22:22
FolkMQ v1.3.2 發佈(消息中間件、事件總線)
劉之西東
2024-03-28 14:21:41
文心一言的必學寫論文使用技巧
張博的博客
2024-03-28 14:20:21
騰訊視頻號直播賣貨學習第二十五課-視頻號店鋪評分的那些細節
aker95935
2024-03-28 14:18:01
騰訊視頻號直播賣貨學習第二十六課-店鋪DSR的核心指標解讀
aker95935
2024-03-28 14:18:01
記一次 .NET某防僞驗證系統 崩潰分析
一線碼農
2024-03-28 14:16:11
[Devops] ubuntu 重裝 nvida-docker 驅動
ffl
2024-03-28 14:08:50
RowHammer 攻擊:內存的隱形威脅
張高興
2024-03-28 14:08:50
Regex正則表達式尋找不包含冒號的字符串
ChuckLu
2024-03-28 14:07:30