c# 并发

一、 程序处理:目的是,在多线程中,使用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版权协议,转载请附上原文出处链接和本声明。