Monitor通过向单个线程授予对象锁来控制对对象的访问。对象锁提供限制访问代码块(通常称为临界区)的能力。当一个线程拥有对象的锁时,其他任何线程都不能获取该锁,也就是这个对象的锁只能有一个线程获得而互斥体Mutex却不是,多个线程可以拥有同一个资源,它只向一个线程授予对共享资源的独占访问权。如果一个线程获取了互斥体,则要获取该互斥体的第二个线程将被挂起,直到第一个线程释放该互斥体。也就是可以多个线程共同拥有,当然,独占访问权只有一个线程获得。
调试欢乐多
Lock是C#里特有的,也代表锁,它可以作为Monitor 的替代,但容易产生死锁;
Mutex是面向代码的 ,是锁住一段代码的;其中有个很重要的方法,waitall(),等待所有锁!