当前位置:编程学习 > C#/ASP.NET >>

要写段windows服务的多线程程序, 在两易做图全一样的服务器上运行, 要访问同一个数据库, 如何保证执行的唯一性

多台机器上的 WINDOWS服务中的线程要循环来侦察同一个数据库中是否有新的任务记录, 有就启用一条任务记录的执行过程.

这条数据库中的任务记录有可能被同时执行
 ,这条执行任务记录有个标志位 ---------是否正在执行,
还有开始时间等.

当一个线程读取标志的时候还要作些判断, 还未锁定这条记录(内部判断时间有点久), 但是另一个线程可能也在读它了,这样保证任务唯一执行就比较困难,  可能被执行两次.
要防止这样的情况.

请教有什么好的解决方案?  --------------------编程问答-------------------- 抢个沙发,先! --------------------编程问答-------------------- 我只做过sql-server的,用隔离级别来控制并发 --------------------编程问答-------------------- 数据库能设定吗?
单从程序考虑,想了下,没想出来什么好的方法
一开始以为是一个程序,用线程同步就解决了
结果会出现什么问题?
瞎说呢,没弄过, --------------------编程问答-------------------- 唉
并发的问题的确比较头疼
不行就加那个什么行级锁,xlock那个什么的,忘记了
不过是有代价的 --------------------编程问答-------------------- 只要在读取的时候,修改该标记,就能避免同一任务执行两次,下面语句,通过一个变量(@returnValue)返回当前记录的状态:
update tblTask set @returnValue=IsRuningFlag=true


@returnValue布尔型变量,可以直接select返回,也可以设为output返回

然后在程序里,判断返回值,若为false,便执行该任务;若为true,说明任务已经有其他的程序执行.

补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,