c#中lock的使用(用於預約超出限額的流程)

karspb發表於2021-09-09

一個專案,預約系統,核心二張表:預約表,預約限額表

使用者點選預約按鈕後,

  1. 先select 預約限額表把該預約時間段的限額取出來,

  2. 再select 預約表把該預約時間已經預約上的次數算出來

  3. 第一步減第二步,得到是否還能進行預約,大於0就可以預約了

  4. 第三步裡大於0的話就insert 預約表

之前的程式碼都是用ado.net+sql語句執行的,然後在正式執行的時候,每天18點可以進行預約,然後我設定了某一時間段是可以預約1個,

結果在18點的時候N個人點了預約,導致計算出預約數後想插入之前,另一個人又來計算預約數了,導致超出限額了

問了下網友,給了三種解決方案:

  1. redis

  2. c#裡的lock

  3. c#裡的ConcurrentQueue

自己 測試了一下,用第二種 ,成功了,

圖片描述
圖片描述
圖片描述
第三種的話網友也給了個示例:

圖片描述
圖片描述
圖片描述

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2001/viewspace-2809107/,如需轉載,請註明出處,否則將追究法律責任。

相關文章