前言
Race Condition 可翻譯成「競爭條件」,在中文版 Wiki 上看不懂的話,可看英文版 Wiki 的描述,會比較清楚,以下為白話文翻譯:
同筆資料同時被 2 thread 以上操作,導致結果的不正確
常見情境可能有:
搶票系統、搶購限量商品時 (ex: 限量 100 張票,卻賣了 101 張)
使用者送出資料時,剛好這時 server 負載較重 (處理比較慢),使用者以為還沒處理完成,於是在前端連點,雖然 model 有做 validates :email, uniqueness: true ,但 DB 沒再次驗證,也有可能發生此問題 (可參考: ActiveRecord - 資料驗證及回呼)