搜尋
首頁每日程式設計PHP知識兩個生活範例帶你理解'線程同步原理”

多個執行緒(或行程)要執行同一個特定的不可重入的程式碼區塊(稱為臨界區),這就需要適當的並發控制同步技術。否則,可能會發生競態條件。

                                                    --維基百科

說白了就是但多個執行緒同時要對某一區域區塊(臨界區/臨界資源)操作,需要運用一些技術手段來對臨界資源進行保護,避免共同使用期間產生混亂。

舉個簡單的例子,我們支付寶給?@旺柴先生轉帳?1RBM,這個時候同時也有另外一個人給他轉帳?1RBM,這時他自己的錢包已經有1塊錢來,但由於這兩筆帳是同時進帳的,所以非線程同步系統會作出如下操作:

兩個生活範例帶你理解線程同步原理”

#非線程同步最終取錢包餘額為2元,顯然是不對的,我們來看看加上線程同步後:

兩個生活範例帶你理解線程同步原理”

最終取錢包餘額為3元,這裡的解決方案採用了加鎖?來解決,那麼具體的都有哪幾種方式呢?

兩個生活範例帶你理解線程同步原理”

我們這裡也可以用一個更通俗的例子來說明:

  • 有一個新建的十字路口,剛開始的適合這個路口沒多少車輛?,大家每次到這個路口都很愉快地通過了可是慢慢的知道這條路的人越來越多,但是大家都沒有秩序地通過路口,結果有一天就出了事故了,所以負責道路設施的人來裝了一個紅綠燈,只有這個方向的綠燈亮了,這個方向的人方可前行,這就是互斥鎖

  • 而有的車輛到這裡不一定是要過路口的,有的車輛這是到這裡掉個頭,所以負責道路設施的人就設計了一條掉頭車道,允許掉頭的車輛?通過,而不用跟直行車輛等待紅燈才能掉頭。這就是讀寫鎖

  • 附近有家倉庫發生火災了,消防車佔用了轉彎車道(佔用資源不釋放,自己過了別人才能過),直到消防車隊?? ?通過後後面的車輛才能正常通行,這就是自旋鎖

  • 這個路口是城區入口,久而久之交通壓力變大,交通部門開始指定規定,早晚高峰時段外端口車輛禁止通行,且限號出現,這就是增加「條件變數」添加緩衝區緩解壓力

有些例子可能不那麼準確,例如自旋鎖,但透過這個例子結合實際理論可我們可以快速理解記憶各鎖?的特徵。

以上是兩個生活範例帶你理解'線程同步原理”的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
1 個月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它們
1 個月前By尊渡假赌尊渡假赌尊渡假赌

熱工具

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具