社区
C#
帖子详情
一段代码同时只能一个人执行
lvfeng19806001
2011-10-12 04:51:22
代码流程:
清除报表数据库数据(报表有关的表很多)--->通过复杂的逻辑运算插入数据库报表数据--->查询报表数据库并给Excel填入数据
现在要求这个过程同时只能一个人执行,否则后面查询的数据就会不对!
bs程序
这个应该怎么弄?谢谢大家
...全文
1335
48
打赏
收藏
一段代码同时只能一个人执行
代码流程: 清除报表数据库数据(报表有关的表很多)--->通过复杂的逻辑运算插入数据库报表数据--->查询报表数据库并给Excel填入数据 现在要求这个过程同时只能一个人执行,否则后面查询的数据就会不对! bs程序 这个应该怎么弄?谢谢大家
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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()主函数
执行
完毕后是否会再
执行
一段
代码
C语言main()主函数
执行
完毕后是否会再
执行
一段
代码
分享到:QQ空间新浪微博腾讯微博豆瓣人人网 main() 主函数
执行
完毕后,是否可能会再
执行
一段
代码
?给出说明。 main主函数是所有程序必须具备的函数,是C/...
如何读懂
一段
代码
每个人的世界都是不尽相同的,因此在读别人的
代码
时,总会有些滞涩,我也是更愿意自己写,读懂算法思想、梗概,然后自己来实现。因此在过去很长
一段
时间,写的
代码
都只是一时之快,很难长久——写完不久之后,我已经...
java同步方法和同步
代码
块
一、当两个并发线程访问同
一个
对象object中的这个synchronized(this)同步
代码
块时,
一个
时间内
只能
有
一个
线程得到
执行
。另
一个
线程必须等待当前线程
执行
完这个
代码
块以后才能
执行
该
代码
块。
java中多个用户调用同
一个
方法程序的处理过程以及并发问题
java中多个用户在访问同
一段
代码
的时候,后台会为每
一个
请求分配
一个
单独的线程来处理,线程之间是相互独立的,互不干扰,当然也可以相互通信。并发问题只有在多个线程之间可能修改同一资源的时候才会出现,解决并发...
关于 leetcode提交
代码
的
执行
用时
2、之前还看到有网友发过作弊
代码
,也就是在提交
代码
前加上
一段
代码
,这段
代码
会修改运行期间程序读写速度。 3、 leetcode初衷就是通过大量的算法实例,来提高算法水平。关注的应该是算法本身,比如时间复杂度和空间...
C#
110,566
社区成员
642,567
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章