最近在学习ice中间件,对于有关monitor部分进行一下总结。
在各论坛,博客找了很多资料,都不是很详细,下面做一个总结。
(一)监控器
监控器是一种用于保护临界区的同步机制:和互斥体一样,同一时刻在临界区内,只能有一个线程在活动。但是,监控器允许你在临界区内挂起线程;这样,另一个线程就能进入临界区。第二个线程可以离开监控器 (从而解除监控器的加锁),或者在监控器内挂起自己;不管是哪一种情况,原来的线程都会被唤醒,继续在监控器内执行。
(二)Monitor类
namespace IceUtil
{
template <class T>
class Monitor
{
public:
typedef LockT<Monitor<T> > Lock;
typedef TryLockT<Monitor<T> > TryLock;
Monitor();
~Monitor();
//
// Note that lock/tryLock & unlock in general should not be used
// directly. Instead use Lock & TryLock.
//
void lock() const;
void unlock() const;
bool tryLock() const;
void wait() const;
bool timedWait(const Time&) const;
void notify();
void notif