Poco C++库不仅完全兼容C++标准库,更弥补了很多标准库的不足(C++11同样也补充了很多新标准,但是目前市场上没有一个编译器能够完全支持)。个人认为相比于其它C++程序库(例如boost C++),Poco可以说是非常短小精悍。而且高度的模块化和高效的设计与实现让Poco非常适合嵌入式应用。Poco充分利用了C++的特性:面向底层的掌控(设备 I/O等等)和高层的面向对象开发。这也是优秀的C++程序库应该具备的,这也是为什么C++始终在编程语言中如此强大的原因了。C++在底层操控和高层逻辑处理上扮演了很关键的中间角色,一旦能将各平台相关的API利用C++特性抽象成高级的统一的面向对象描述,那么这个C++库才是一个优秀的”轮子”,这样作为库的使用者(即应用开发者)就能够集中关注于应用自身。
~BasicEvent(){} /////////////////////////////////////////////// // 三个主要的成员函数接口 voidoperator += (const Delegate& aDelegate) /// Adds a delegate to the event. { _strategy.add(aDelegate); }
voidoperator -= (const Delegate& aDelegate) /// Removes a delegate from the event. /// /// If the delegate is not found, this function does nothing. { _strategy.remove(aDelegate); }
voidoperator += (const TDelegate& aDelegate) /// Adds a delegate to the event. /// Exact behavior is determined by the TStrategy. { // 作用域内的互斥对象,析构时释放互斥锁 typename TMutex::ScopedLock lock(_mutex); // 策略类中包含了用于存放委托事件的容器 _strategy.add(aDelegate); }
voidoperator -= (const TDelegate& aDelegate) /// Removes a delegate from the event. /// If the delegate is not found, this function does nothing. { typename TMutex::ScopedLock lock(_mutex); _strategy.remove(aDelegate); }
template <classTArgs, classTMutex = FastMutex> class BasicEvent: public AbstractEvent < TArgs, DefaultStrategy<TArgs, AbstractDelegate<TArgs> >, AbstractDelegate<TArgs>, TMutex > /// A BasicEvent uses the DefaultStrategy which /// invokes delegates in the order they have been registered. /// DefaultStrategy采用FIFO策略处理事件响应 { public: BasicEvent(){}