copy from github\u4e0a\u7684\u4e00\u4efd\u5b9e\u73b0\u3002\u3002\u3002\u627e\u4e0d\u5230\u94fe\u63a5\u4e86\u3002\u3002\u3002
* epoll\u4e3b\u8981\u8d1f\u8d23fd\u5230event\u7c7b\u578b\u7684\u6620\u5c04
* EventDemultiplexer\u7ba1\u7406fd <-> event\u7c7b\u578b <-> eventhandler\u5177\u4f53\u600e\u4e48\u505aevent\u7684\u56de\u8c03\u65b9\u6cd5\uff0c\u4ece\u800c\u95f4\u63a5\u5b9e\u73b0fd <\u2013event\u7c7b\u578b\u2013> eventhandler
\u7684\u5177\u4f53\u56de\u8c03\u65b9\u6cd5\u65b9\u6cd5
* Reactor\u8d1f\u8d23\u6ce8\u518c\u3001\u7ba1\u7406\u3001\u5206\u914d<\/p> \n
\u6838\u5fc3\u4ee3\u7801<\/h3> reactor.h \n \r\n#include "event_handler.h"\r\n#include "event.h"\r\n#include "reactor_impl.h"\r\n\r\nclass ReactorImpl; \/\/ \u4e3a\u4e86\u9690\u85cf\u5177\u4f53\u5b9e\u73b0\u4e48\u3002\u3002\r\n\r\nclass Reactor {\r\npublic:\r\n static Reactor& get_instance();\r\n int regist(EventHandler* handler, Event evt);\r\n void remove(EventHandler* handler);\r\n void dispatch(int timeout = 0);\r\n\r\nprivate:\r\n Reactor();\r\n ~Reactor();\r\n Reactor(const Reactor&);\r\n Reactor& operator=(const Reactor&);\r\n\r\nprivate:\r\n ReactorImpl* _reactor_impl;\r\n static Reactor reactor;\r\n};<\/pre> reactor.cpp \n \r\n#include "reactor.h"\r\n#include \n \n \r\n#include \n \n Reactor Reactor::reactor; Reactor& Reactor::get_instance() { return reactor; } Reactor::Reactor() { _reactor_impl = new (std::nothrow)ReactorImpl(); assert(_reactor_impl != NULL); } Reactor::~Reactor() { if (_reactor_impl != NULL) { delete _reactor_impl; _reactor_impl = NULL; } } int Reactor::regist(EventHandler* handler, Event evt) { return _reactor_impl->regist(handler, evt); } void Reactor::remove(EventHandler* handler) { return _reactor_impl->remove(handler); } void Reactor::dispatch(int timeout) { return _reactor_impl->dispatch(timeout); }\n <\/new>\n <\/assert.h><\/pre> reactor_impl.h \n \r\n#include <\/pre> \n