c#中lock的使用(用於預約超出限額的流程)
一個專案,預約系統,核心二張表:預約表,預約限額表
使用者點選預約按鈕後,
-
先select 預約限額表把該預約時間段的限額取出來,
-
再select 預約表把該預約時間已經預約上的次數算出來
-
第一步減第二步,得到是否還能進行預約,大於0就可以預約了
- 第三步裡大於0的話就insert 預約表
之前的程式碼都是用ado.net+sql語句執行的,然後在正式執行的時候,每天18點可以進行預約,然後我設定了某一時間段是可以預約1個,
結果在18點的時候N個人點了預約,導致計算出預約數後想插入之前,另一個人又來計算預約數了,導致超出限額了
問了下網友,給了三種解決方案:
-
redis
-
c#裡的lock
- c#裡的ConcurrentQueue
自己 測試了一下,用第二種 ,成功了,
第三種的話網友也給了個示例:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2001/viewspace-2809107/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 用於預防勒索軟體的 DevSecOps 流程dev
- 當使用者無限制使用表空間配額且表空間有足夠空間時出現超出表空間的空間限額
- SD-WAN的優勢遠遠超出成本節約
- 如何使用 C# 中的 ValueTaskC#
- 如何使用 C# 中的 LazyC#
- SemanticKernel/C#:使用Ollama中的對話模型與嵌入模型用於本地離線場景C#模型
- 用託管類庫的方式在C#中使用C++編寫的類(設計流程)C#C++
- 關於C#中async/await的用法C#AI
- C#中普通快取的使用C#快取
- java中Stream的使用流程及注意Java
- 餘額寶快速到賬限額1萬?餘額寶快速提現限額調整
- Go 中實現使用者的每日限額(比如一天只能領三次福利)Go
- 表空間限額
- 關於 ReentrantLock 中鎖 lock() 和解鎖 unlock() 的底層原理淺析ReentrantLock
- C#中的char和string的使用簡介C#
- 如何理解 SpringBoot 中的約定優於配置Spring Boot
- async和await的使用總結 ~ 竟然一直用錯了c#中的async和await的使用。。AIC#
- 使用laravel解決庫存超出的幾個方案Laravel
- 一款簡約實用的“線上介面流程測試工具”
- 想象創造世界!《樂高無限》全渠道預約破700萬
- C#中關於 object,dynamic 一點使用心得C#Object
- 【swagger】C# 中 swagger 的使用及避坑SwaggerC#
- 遊戲關卡中的型別運用:《LOOP》的無限可能遊戲型別OOP
- 關於 Spring 中 getBean 的全流程原始碼解析SpringBean原始碼
- 基於C#的GRPCC#RPC
- [C#]C#中字串的操作C#字串
- C#/Vsto中CustomTaskPanes和Ribbon的使用方法C#
- C# ExpandoObject的使用C#Object
- C# RabbitMQ的使用C#MQ
- 關於c#使用Npoi庫的一些隨筆C#
- 基於Gitlab的CICD流程Gitlab
- 關於無限註冊的可行方法
- synchronized與Lock的區別與使用詳解synchronized
- C# 針對特定的條件進行鎖操作,不用lock,而是mutexC#Mutex
- 終於定檔!魅力MMO精品《海島紀元》火熱預約中
- forsage智慧合約開發技術應用流程
- 關於智慧合約的去中心化有什麼用?中心化
- 個人收款碼限額?商家的收款碼還能用嗎