簡介
競態條件(race condition),從多進程間通信的角度來講,是指兩個或多個進程對共享的數據進行讀或寫的操作時,最終的結果取決於這些進程的執行順序。
存儲空間
在計算機記憶體或者存儲里,如果同時發出讀寫大量數據的指令的時候競態條件可能發生,機器試圖覆蓋相同的或者舊的數據,而此時舊的數據仍然在被讀取。結果可能是下面一個或者多個情況:計算機當機,出現非法操作提示並結束程式,錯誤的讀取舊的數據,或者錯誤的寫入新數據。在串列的記憶體和存儲訪問能防止這種情況,當讀寫命令同時發生的時候,默認是先執行讀操作的。
網路
競態條件(race condition)會在兩個用戶同時試圖訪問同一個可用信道的時候發生,在系統同意訪問之前沒有計算機能得到信道被占用的提示。統計上說這種情況通常是發生在有相當長的延遲時間的網路里,比如使用地球同步衛星。為了防止這種競態條件發生,需要添加一個優先權列表。比如用戶的用戶名在字母表里排列靠前可以得到相對較高的優先權。黑客可以利用競態條件這一弱點來贏得非法訪問網路的權利。
當出現如數衝突的時候,邏輯門偶爾發生競態條件。由於門的輸出狀態是有限的,相應輸入變化的時間是非零值,因此會導致一些不合適的操作。