之前看了反应器模式,也试着实现了几个模型,但总觉得有点模糊,今天看了一下C++NP v2,受了点启发。
我现在的做法是:主函数创建两个线程,在两个线程中分别实例化ACE_Reactor对象,reactor1和reactor2,这样整个进程中就有了两个反应器(不知道这样的理解方式对不对),然后从ACE_Event_Handler派生了两个事件处理类,分别是Handler1和Handler2,我的原意是在Handler1里面使用reactor1,在Handler2里面使用reactor2,而且确实做到了。我跟踪看了一下,但是在Handler1和Handler2的open函数中,我注册的代码是
ACE_Reactor* r = ACE_Reactor::instance();
int ret = ACE_Reactor::instance()->register_handler(this, ACE_Event_Handler::ACCEPT_MASK);
虽然Handler1和Handler2使用的是不同的reactor,但是这里的r却是相同的,是同一个对象。
我就不明白了,Reactor到底该怎么理解?ACE_Reactor::instance()表达的具体含义是什么?