这周帮老师做了一个介绍管程的PPT,很多书在讲操作系统中线程的管程时,都有标注上说,管程比较偏学术,没有哪个语言支持,像我的老师就问了很多同事,大家都不知道其实.NET平台已经实现了管程类来帮助我们管理线程。以下我用C#语言作为例子,来简单介绍一下。如果有哪位高手更加了解这个类,希望您可以多讲解一下,如果发现错误请提出!!非常感激~
.NET Framework的System.Threading命名空间下提供了monitor类来实现线程同步。它提供了资源访问的控制机制,允许一个特定的线程对资源的独占式访问。与Lock不同,它可以进一步提供控制线程的具体操作。
下面是对monitor类的方法介绍[1]
Public static void Enter(Object obj)—开始进入监控区,试图得到指定对象的监控器锁。
•Public static void Exit(Object obj)—监控结束,并释放指定对象的监控锁。
•Public static void Pulse(Object obj)—释放对象的锁,并叫醒等待队列里的第一个线程。
•Public static void PulseAll(Object obj) )—释放对象的锁,并叫醒等