Race Condition 競爭危害

Race Condition 競爭危害

常在多執行序(Multi-Thread) 中遇到,當需要將存取的資源鎖定住,避免程式執行過程中資源被異動,導致最後結果與預期不符,但同時有多個執行序需要鎖定相同資源時,彼此會互相等對方釋放資源才能夠繼續執行,變成一個死結 Dead lock 的狀況

如何解決 Race Condition

  • 程式在 鎖定 lock 資料時,使用相同的順序同時 鎖定所有需要鎖定的資料,確保程式執行前擁有所有需要處理的資源,不會處理到一半發現其他資源被 鎖定 lock 住無法執行
  • 當有其他邏輯需要 鎖定 lock 相同資料時,必須要鎖定 相同順序 的資源,所以當無法順利 鎖定 lock 時,就不會有處理資料到一半的狀況

參考資料