c#中lock的使用(用于预约超出限额的流程)
一个项目,预约系统,核心二张表:预约表,预约限额表
用户点击预约按钮后,
1. 先select 预约限额表把该预约时间段的限额取出来,
2. 再select 预约表把该预约时间已经预约上的次数算出来
3. 第一步减第二步,得到是否还能进行预约,大于0就可以预约了
4. 第三步里大于0的话就insert 预约表
之前的代码都是用ado.net+sql语句执行的,然后在正式运行的时候,每天18点可以进行预约,然后我设置了某一时间段是可以预约1个,
结果在18点的时候N个人点了预约,导致计算出预约数后想插入之前,另一个人又来计算预约数了,导致超出限额了
问了下网友,给了三种解决方案:
1. redis
2. c#里的lock
3. c#里的ConcurrentQueue
自己 测试了一下,用第二种 ,成功了,
第三种的话网友也给了个示例:

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
python包引用问题
python模块引用梳理 文件组织结构: 复制代码t├── __init__.py├── main.py├── t1│ ├── A.py│ └── __init__.py└── t2 ├── B.py └── __init__.py 复制代码A.py def test(): print 't.t1.A.test()' B.py def test(): print 't.t2.B.test()' 执行: python t/main.py 问题1: 在main.py中引用t2/B的test方法,如何写? 方式1: from xxx import xxx from t2 import BB.test()这个写法很糟糕, 但能解决目前问题。糟糕的地方在于隐晦的引入t2。更好的方式是相对引用。 from .t2 import BB.test()但如果用 python t/main.py执行会报错,此处原因请参考这。原因是相对引用默认作为包的方式才能运行。 正确执行方法(linux shell下): python -m t.main 这个写法也不够好!B在具体的代码行,看不出其出处。更好的方式是 ...
-
下一篇
Nginx 合集
笔记一:Nginx 安装 笔记二:Nginx配置详解 笔记三:Nginx常用配置 笔记四:nginx虚拟主机常用配置 笔记五:nginx日志切割脚本 笔记六:nginx优化 笔记七:nginx location语法和rewrite语法 笔记八:四种负载均衡模式 笔记九:nginx动静分离架构 笔记十:正向代理、反向代理 笔记十一:反向代理实现会话保持的两种方式 笔记十二:流行cms的rewrite写法 笔记十三:日志处理、awstats日志分析 笔记十四:状态监控、缓存的两种机制 笔记十五:服务器本地缓存配置 笔记十六:location详细使用 笔记十七:upload上传模块 笔记十八:模块开发 笔记十九:变量详解 笔记二十:配置指令的执行顺序 笔记二十一:http模块 笔记二十二:PHP配置与优化 笔记二十三:搭建flash服务器 笔记二十四:搭建ftp服务器 笔记二十五:性能优化
相关文章
文章评论
共有0条评论来说两句吧...