C#中的函数如何实现事务处理或者变量锁定?
using System;
using System.Threading;
class test
{
private static int i=0;
public static void Add()
{
//A:start
int a=i;
Thread.Sleep(1000);
int b=i++;
Console.WriteLine("b-a={0}",b-a);
//E:end
}
public static void Main()
{
Thread[] th=new Thread[1000];
for(int j=0; j<1000; j++)
{
th[i]=new Thread(new ThreadStart(Add));
th[i].Start();
Thread.Sleep(167);
}
}
}
/* 实际运行这个程序,其输出结果如下:
b-a=0
b-a=1
b-a=2
b-a=3
b-a=4
b-a=5
b-a=5
b-a=5
b-a=5
...一直"b-a=5"下去...
...
我应当如何修改Add()函数才能使得输出结果始终为下面的样子呢?
b-a=1
b-a=1
b-a=1
b-a=1
...
b-a=1
也就是说在A:start和B:end处插入什么样的代码才能将"i"从A开始锁定,到B处释放?
在锁定期间,其他线程不得访问"i",直到释放为止。
这个有些类似于数据库中的事务处理或者表/行锁定,C#中能够做到吗?
请各位高人指点!
*/