社区
C#
帖子详情
一段代码同时只能一个人执行
lvfeng19806001
2011-10-12 04:51:22
代码流程:
清除报表数据库数据(报表有关的表很多)--->通过复杂的逻辑运算插入数据库报表数据--->查询报表数据库并给Excel填入数据
现在要求这个过程同时只能一个人执行,否则后面查询的数据就会不对!
bs程序
这个应该怎么弄?谢谢大家
...全文
1342
48
打赏
收藏
一段代码同时只能一个人执行
代码流程: 清除报表数据库数据(报表有关的表很多)--->通过复杂的逻辑运算插入数据库报表数据--->查询报表数据库并给Excel填入数据 现在要求这个过程同时只能一个人执行,否则后面查询的数据就会不对! bs程序 这个应该怎么弄?谢谢大家
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
48 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
quanziquantao
2011-10-18
打赏
举报
回复
你是担心数据混杂呢还是性能问题?还是担心A处理的数据被B查询到,是不是这个意思?
如果是后一种,你给每次处理的数据加上一个唯一ID,比如sessionid,每个人都只对自己的Sessionid下的数据做处理就可以了。
带着爱远行
2011-10-18
打赏
举报
回复
楼主应该是担心这个业务流程时间消耗太多,怕同一时间其他用户也进行这一操作出问题吧,那么用锁就可以解决。如果我没理解错楼主的意思的话,应该就是并发问题
zhoutiea
2011-10-17
打赏
举报
回复
鄙视38楼~~
zhoutiea
2011-10-17
打赏
举报
回复
方法很重要,实现不重要,想实现一个功能,很好实现,就看你用什么样方法,同样一个功能的sql,两个人写出查询时间是不一样的~~~!!!
samyou
2011-10-17
打赏
举报
回复
重组一下业务流程,应该可以有优化。再谈设计和实现
hxa123456
2011-10-17
打赏
举报
回复
这个问题的本质就是并发问题,怎么处理并发,单例模式可以,lock可以。至于状态改0 、1,这个在用户数量少的情况下也可以,但是在并发度高的情况下,就会有问题。
jtg98g3
2011-10-15
打赏
举报
回复
你的设计本身有问题,你应该好好的分析一下你的需求,然后确定好设计.在谈具体的实现吧.
昵称不能为空噢噢噢噢
2011-10-14
打赏
举报
回复
给表枷锁
卧_槽
2011-10-14
打赏
举报
回复
lock就行了。
苦苦挣扎中
2011-10-14
打赏
举报
回复
[Quote=引用 36 楼 lvfeng19806001 的回复:]
引用 34 楼 zdbb 的回复:
那个加定时判断操作是否异常的怎么弄?
上面很多人说的lock可行不?
回复:
lock可能可行,但是你的操作比较多,相对代码多执行时间长,这样出问题的几率大。建议还是数据库里做记录来标识,简单好用。
定时怎么弄:就是在数据库管理的作业jobs增加1个每秒执行的作业,内容就是执行一段Sql语句,Sql功能是判断表C的记录的时间是否到执行时间,比如……
[/Quote]
其实只要实现就行,方法不是很重要
不老神仙
2011-10-14
打赏
举报
回复
给方法加锁是最好最简便的方法 lock monitor mutex都可以
lvfeng19806001
2011-10-14
打赏
举报
回复
[Quote=引用 34 楼 zdbb 的回复:]
那个加定时判断操作是否异常的怎么弄?
上面很多人说的lock可行不?
回复:
lock可能可行,但是你的操作比较多,相对代码多执行时间长,这样出问题的几率大。建议还是数据库里做记录来标识,简单好用。
定时怎么弄:就是在数据库管理的作业jobs增加1个每秒执行的作业,内容就是执行一段Sql语句,Sql功能是判断表C的记录的时间是否到执行时间,比如执行时间不超过3分钟,如果当前时……
[/Quote]
谢谢你的回复,我现在已经用application实现了,一个key存是否锁定状态,一个key存时间,感觉思路和你这个差不多,我想问下我这个有没有什么大的问题?
wcj1018_net
2011-10-14
打赏
举报
回复
lock monitor 单例模式都可以
只在此山中
2011-10-14
打赏
举报
回复
那个加定时判断操作是否异常的怎么弄?
上面很多人说的lock可行不?
回复:
lock可能可行,但是你的操作比较多,相对代码多执行时间长,这样出问题的几率大。建议还是数据库里做记录来标识,简单好用。
定时怎么弄:就是在数据库管理的作业jobs增加1个每秒执行的作业,内容就是执行一段Sql语句,Sql功能是判断表C的记录的时间是否到执行时间,比如执行时间不超过3分钟,如果当前时间是13:00,表C记录字段时间是12:57,那就表示超时了然后把表C记录删除,没超时就不删。
kevinmartin
2011-10-14
打赏
举报
回复
可惜结贴了
yidongliange4
2011-10-13
打赏
举报
回复
[Quote=引用 3 楼 jinkuang45 的回复:]
用 lock 锁
[/Quote]
锁不行吧 ?多个用户访问的时候IIS给每个访问用户分配的是新的线程新的对象。
在application中加个是否在执行的标志呢?
zzz9413
2011-10-13
打赏
举报
回复
补充,执行操作之前,先判断IsLock状态,
如果没锁,正常操作。
如果锁定,判断锁定人是否在线。锁定人不在线,也可正常操作。(这里冗余设计一下无所谓)
zzz9413
2011-10-13
打赏
举报
回复
不管怎么复杂,只要是对某一条记录操作,都可以用以下方法:
我的做法是数据库设计一个IsLock 和currUser字段。代表谁正在锁定这条记录
开始修改时,先锁定这条记录 updateset 表名 set IsLock ='true',currUser='当前操作用户'
操作结束后
update这条记录set IsLock =‘false’
如果该用户不在线,则自动将该用户锁定的记录解锁
lvfeng19806001
2011-10-13
打赏
举报
回复
[Quote=引用 24 楼 zdbb 的回复:]
在数据库加个操作记录表C,一个用户A操作时判断表记录空则在表C插入操作开始时间记录,这样A可以继续操作到结束,然后删除插入记录。
同时如果用户B操作先判断表C记录,记录不为空无法操作,直到A退出才能操作。
也可以在数据库Agent job中加定时判断操作是否异常,如果异常可以清楚表C记录,避免死锁。
[/Quote]
那个加定时判断操作是否异常的怎么弄?
上面很多人说的lock可行不?
只在此山中
2011-10-13
打赏
举报
回复
在数据库加个操作记录表C,一个用户A操作时判断表记录空则在表C插入操作开始时间记录,这样A可以继续操作到结束,然后删除插入记录。
同时如果用户B操作先判断表C记录,记录不为空无法操作,直到A退出才能操作。
也可以在数据库Agent job中加定时判断操作是否异常,如果异常可以清楚表C记录,避免死锁。
加载更多回复(27)
C语言main()主函数
执行
完毕后是否会再
执行
一段
代码
main()主函数
执行
完毕后,是否可能会再
执行
一段
代码
?给出说明。main主函数是所有程序必须具备的函数,是C/C++人员一接触
代码
就知道的函数,那么这个问题会难倒很多...
如何读懂
一段
代码
对于
一段
不知道背景知识的
代码
,如何读懂? 对于程序员来说,读
代码
要比写
代码
困难。因为写
代码
是在自己的世界创造,而读
代码
却是在接触别人的世界的建筑。每个人的世界都是不尽相同的,因此在读别人的
代码
时,总会有些滞涩,我也是更愿意自己写,读懂算法思想、梗概,然后自己来实现。因此在过去很长
一段
时间,写的
代码
都只是一时之快,很难长久——写完不久之后,我已经不认识自己曾经写的东西了,甚至觉得那是别人写的。
Java web
一段
代码
只
执行
一次
static boolean flag = true; if (flag) { flag = false; System.out.println("-------------------------------------------------------------------------------------------------"); //写要
执行
的
代码
} Syst...
shell中如何进行
一段
代码
的注释
在shell编程中,我们常常需要把一些语句注释掉,让它不
执行
,对单号或者少数几行shell脚本来说,在每行前面增加#符号就可以达到目的了,
代码
如下:
#cp ./a.txt ./b.txt #mkdir -p {1,2,4}/{2,4,6} #echo "ok"
但如果我们需要对一大段的shell脚本进行注释,倘若我们都在每行前面添加#,这对我们来说,确实不是一件很令人舒服的事情,那么,在shell中,有没办法采用类似c语言的注释/* ...*/来达到
某个php页面在同一时间
只能
由
一个
用户
执行
,其它用户排队,有办法吗? - PHP进阶讨论
可以用session_set_save_handler(open,close,read,write,destory,gc)解决:先通过
一个
变量标志此页面是否有用户在
执行
,当用户请求这个页面的时间,就打开Session,在Open方法中查看标志,如果有用户在
执行
的话就关闭这个Session,并在close方法中,重新打开
一个
Session,如果
一个
用户
执行
完这个页面的话,就毁掉这个Session,在
C#
111,111
社区成员
642,556
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章