eventpp C++ 事件派发和回调代码库开源项目

我要开发同款
wqking2018年09月17日
106阅读

技术信息

开源地址
https://github.com/wqking/eventpp
授权协议
Apache

作品详情

evetpp是一个C++事件库,它提供的工具允许应用程序组件通过调度事件并监听它们来相互通信。使用evetpp,您可以非常轻松地实现信号/插槽机制或观察者模式。

特性

支持同步事件调度和异步事件队列。

可配置和可扩展的策略和mixis。

通过mixis支持事件过滤器。

支持嵌套事件。在处理事件期间,侦听器可以安全地调度事件,追加/预置/插入/删除其他侦听器。

线程安全。支持多线程。

异常安全。大多数操作保证强异常安全。

用大量单元测试来保证质量。

速度快。EvetQueue可以在1秒内处理10M事件(每毫秒10K事件)。CallbackList可以在1秒内调用100M回调(每毫秒100K回调)。CallbackList可以在1秒内添加/删除5M回调(每毫秒5K回调)。

灵活易用。

侦听器和事件可以是任何类型,不需要从任何基类继承。

纯头文件,没有源文件,无需构建。不依赖于其他库。

需要C++11(使用MSVC2017,MSVC2015,MiGW(Msys)gcc7.2和Ubutugcc5.4测试)。

用可移植的标准的C++编写。

使用CallbackList#iclude "evetpp/callbacklist.h"evetpp::CallbackList<void (cost std::strig &, cost bool)> callbackList;callbackList.apped([](cost std::strig & s, cost bool b) {    std::cout << std::boolalpha << "Got callback 1, s is " << s << " b is " << b << std::edl;});callbackList.apped([](std::strig s, it b) {    std::cout << std::boolalpha << "Got callback 2, s is " << s << " b is " << b << std::edl;});callbackList("Hello world", true);使用EvetDispatcher#iclude "evetpp/evetdispatcher.h"evetpp::EvetDispatcher<it, void ()> dispatcher;dispatcher.appedListeer(3, []() {    std::cout << "Got evet 3." << std::edl;});dispatcher.appedListeer(5, []() {    std::cout << "Got evet 5." << std::edl;});dispatcher.appedListeer(5, []() {    std::cout << "Got aother evet 5." << std::edl;});// dispatch evet 3dispatcher.dispatch(3);// dispatch evet 5dispatcher.dispatch(5);使用EvetQueueevetpp::EvetQueue<it, void (cost std::strig &, cost bool)> queue;dispatcher.appedListeer(3, [](cost std::strig s, bool b) {    std::cout << std::boolalpha << "Got evet 3, s is " << s << " b is " << b << std::edl;});dispatcher.appedListeer(5, [](cost std::strig s, bool b) {    std::cout << std::boolalpha << "Got evet 5, s is " << s << " b is " << b << std::edl;});// The listeers are ot triggered durig equeue.queue.equeue(3, "Hello", true);queue.equeue(5, "World", false);// Process the evet queue, dispatch all queued evets.queue.process();

功能介绍

eventpp 是一个 C++ 事件库,它提供的工具允许应用程序组件通过调度事件并监听它们来相互通信。使用eventpp,您可以非常轻松地实现信号/插槽机制或观察者模式。 特性 支持同步事件调度...

声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论