4、Lock
Lock 关键字将语句块标记为临界区,方法是获取给定对象的互斥锁,执行语句,然后释放该锁。(MSDN)
Lock(关键字),在需要同步的线程中要确保访问的是同一关键字对象。
上面代码的Lock实现
class Program
{
private static object LockObj=new object();
static void Main(string[] args)
{
Lock();
Console.Read();
}
static void Lock()
{
for (int i = 0; i < 4; i++)
{
Thread tr = new Thread(doing);
tr.Start(i);
}
}
static void doing(object threadName)
{
lock (LockObj)
{
int i = 0;
while (i < 10)
{
Thread.Sleep(100);
Console.WriteLine(threadName + " " + i++);
}
Console.WriteLine(threadName + "over ");
}
}
}
{
private static object LockObj=new object();
static void Main(string[] args)
{
Lock();
Console.Read();
}
static void Lock()
{
for (int i = 0; i < 4; i++)
{
Thread tr = new Thread(doing);
tr.Start(i);
}
}
static void doing(object threadName)
{
lock (LockObj)
{
int i = 0;
while (i < 10)
{
Thread.Sleep(100);
Console.WriteLine(threadName + " " + i++);
}
Console.WriteLine(threadName + "over ");
}
}
}