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

2022-01-10 23:39:21 字數 470 閱讀 1044

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

使用者點選預約按鈕後,

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

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

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

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

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

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

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

1. redis

2. c#裡的lock

3. c#裡的concurrentqueue

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

第三種的話網友也給了個示例:

c 中函式中將引用用於類物件

在c 的引用學習中,遇到一些問題,比如返回成員函式內部變數的引用,這個變數會在函式宣告週期結束的時候就被析構,然後返回了這個變數的引用就會出現乙個錯誤的記憶體的引用,具體例子入下 therefofc cpp 定義控制台應用程式的入口點。include stdafx.h include include...

C 中的Lock機制

lock在msdn的定義 lock關鍵字可以用來確保 塊完成執行,而不會被其他執行緒中斷。這是通過在 塊執行期間為給定物件獲取互斥鎖來實現的。lock應用 經常用於防止多執行緒操作導致公用變數值出現不確定的異常,用於確保操作的安全性。如上面 當執行緒1和執行緒2都來呼叫這個方法的時候,當執行緒1先呼...

C 中物件的lock鎖定

寫c 時,遇到有過程需要排隊執行,就使用了lock方法進行鎖定,鎖定物件為一list陣列,在臨界區 段中對該資料進行讀取操作。在某些偶然情況下,會發現該資料在鎖定 段以外進行訪問時,會丟擲乙個異常 源陣列長度不足。請檢查 srcindex 和長度以及陣列的下限 此時再執行其他操作就無效了。後查閱資料...