线程同步之Monitor结构
-------概述
在Framework中已经为我们提供了三个加锁的机制,分别是
Monitor类
Lock关键字
Mutex类
Monitor类
Lock关键字
Mutex类
都是锁定数据或是锁定被调用的函数。
Mutex则多用于锁定多线程间的同步调用。简单的说,Monitor和Lock多用于锁定被调用端,而Mutex则多用锁定调用端。
Monitor和Lock将代码段标记为临界区,其实现原理是首先锁定某一私有对象,然后执行代码段中的语句,当代码段中的语句执行完毕后,再解除锁。
Mutex则多用于锁定多线程间的同步调用。简单的说,Monitor和Lock多用于锁定被调用端,而Mutex则多用锁定调用端。
Monitor和Lock将代码段标记为临界区,其实现原理是首先锁定某一私有对象,然后执行代码段中的语句,当代码段中的语句执行完毕后,再解除锁。
--------Monitor结构
private Object obj = new Object();//定义一私有对象
//……其它代码
Monitor.Enter(obj);
//….操作临界资源
Monitor.Exit(obj);
--------monitor结构的使用方法和LOCK结构是相似的。
首先,先定义这样的一个对象:
private Object obj = new object();
接着,在需要加锁的地方加锁:
Monitor.Enter(obj);
//lock(this)
{
Console.WriteLine("{0}{1}", str, System.DateTime.Now.Millisecond.ToString());
Thread.Sleep(50);
}
Monitor.Exit(obj);