1. 程式人生 > >臨界數據、臨界區和原子操作

臨界數據、臨界區和原子操作

png .com 修改 blog 概念 數據 競爭 es2017 實例

1、首先給出這三個名詞的定義。

臨界數據指多個進程(或線程)會競爭修改的數據。

臨界區指修改臨界數據的代碼區域。

原子操作指臨界區的代碼不會被這個臨界數據的其他臨界區的代碼打斷。

2、通過一個實例來理解這些概念。

技術分享

在這個實例中臨界數據是標準輸出,臨界數據對應的其中一個臨界區就是圖中紅框部分,紅框中的臨界區代碼不應該被其他臨界區打斷,否則就有可能出現標準輸出被打亂。通過信號量使得臨界數據同一時間只能被一個臨界區訪問。

也就是說如果現在一個臨界區在訪問這個臨界數據,那麽當進程進行調度時,絕對不會切換到另一個臨界區,只可能切換到其他代碼。這也就是上面“同一時間”的含義。

修改stdout的這一系列操作因為不會被其他臨界區打亂,所以變成了原子操作。

參考:http://blog.csdn.net/ljianhui/article/details/10243617

臨界數據、臨界區和原子操作