记录一下常用的3种锁 1.lock2.Monitor3.Mutex 感觉没有C++的种类丰富哦。少点也好。
使用锁的时候我们要先定义锁的对象,对象应该是什么样的呢?
定义的锁对象应该是 私有的,只读的,这样可以防止外部改变
静态的 线程只认锁,即使不是一个示例,只要是同一把静态锁也能起到同步作用,引用类型的对象这个,,谁来解释一下。
1.lock的使用
Lock是Monitor的语法糖。
Lock只能针对引用类型加锁。
private static readonly object lock_= new object();
lock (lock_)
{
//todo
}
2.Monitor
Monitor能够对值类型进行加锁,实质上是Monitor.Enter(object)时对值类型装箱。
Monitor还有其他的一些功能
private static readonly object lock = new object();
Monitor.Enter(lock_);
//todo
Monitor.Exit(lock_);
3.Mutex (可以跨越进程)
比如你同要给程序检测双开可以使用。
private static readonly Mutex mutex_ = new Mutex();
mutex_ .WaitOne();
//todo
mutex_ .ReleaseMutex();