一、 程序处理:目的是,在多线程中,使用lock后,能使该代码块按照指定的顺序执行,被lock这块代码已经被其中一个线程访问了,那么另外一个线程只能等待。
private static object o = new object();//创建一个对象
public void Work()
{
lock(o)//锁住这个对象
{
//做一些必须按照顺序做的事情
}
}
二、 数据库 表里面加 Version 字段。(也可以是其他字段名字)
每次改变数据时,都先查询一遍 Version 。然后把 Version 字段的数据也当成一个条件。
这样,如果有多个人同时执行(并发)时,就只有一个修改成功。
以下sql 只是模拟 并发执行,并非真正的并发
DECLARE @Version VARCHAR(50)=5
UPDATE test
SET cwno='123456',Version=ISNULL(Version,0)+1
WHERE ID = 28345 and ISNULL(Version,0)=@Version
UPDATE test
SET cwno='456789',Version=ISNULL(Version,0)+1
WHERE ID = 28345 and ISNULL(Version,0)=@Version
版权声明:本文为net744933700原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。