最近寫購物程序時當考慮到并發情況下避免出現超額購買的問題。想了下面如圖1這個流程當接到買入請求時更新庫存(操作方式如圖2)操作返回int i若為1則表示庫存足夠,可以購買。0則表示庫存不足。若更新庫存成功則開啟事務(允許用戶進行支付操作,這里會引用外部api,由于事務允許并發,所以不會干擾性能,考慮到支付操作時是針對的單行記錄,其他線程不會對此事務造成干擾引起錯亂)問題1:現在不明白的是圖2中標注出的那一行,他的返回的原理是什么。內部是否是原子性的實現,若內部實現采用的是類似row_count(),在并發情況下就會出現獲取返回條目與實際不符,導致判斷出錯。問題2:這種流程還會出現哪些嚴重的問題。-----------------------------------------分割線-----------------------------------------------雖然介紹說事務是原子性的,但并不是真正意義上一個事務執行完才可以執行另一個事務。遇到并發的情況下,多個事務對庫存的同時進行讀操作后再進行寫操作會造成錯誤。 所以在剛接到請求時更新庫存沒有用到事務。
添加回答
舉報
0/150
提交
取消