当前位置: 首页 > news >正文

学习笔记-eventpp库

0.引用

https://blog.csdn.net/fanjufei123456/article/details/128097861

https://article.juejin.cn/post/7165650299154071582

https://article.juejin.cn/post/6850418118864994311?from=search-suggest

1.前言

本文是自己的学习笔记,主要是作为备忘录使用,所以内容不够系统可能有很多问题。

1.正文

1.1 使用eventpp::Callbacklist 模板

/* Eventpp test code */
#include <eventpp/callbacklist.h>
#include <iostream>
#include <string>void freeFunction(int a, const std::string & b) {std::cout << "freeFunction called with a = " << a << ", b = " << b << std::endl;
}int main(int argc, char *argv[]) {eventpp::CallbackList<void(int, const std::string &b)> callbacklist;callbacklist.append(freeFunction);callbacklist.append([](int a, const std::string & b) {std::cout << "Lamba called with a = " << a << ", b = " << b << std::endl;});callbacklist(33, "Hello Eventpp test");return 0;
}
// g++ -std=c++17 -I../eventpp eventpp_test.cc -o eventpp_test
// ./eventpp_test

执行结果

➜  test ./test
freeFunction called with a = 33, b = Hello Eventpp test
Lamba called with a = 33, b = Hello Eventpp test
➜  test

1.2 使用 eventpp::Dispatcher

程序

/* eventpp dispatcher test */
#include <eventpp/eventdispatcher.h>
#include <iostream>
#include <string>int main(int argc, char *argv[]) {eventpp::EventDispatcher<int, void(int, const std::string &b)> dispatcher;dispatcher.appendListener(1, [](int a, const std::string &b) {std::cout << "Listener 1 callwed with a = " << a << ", b = " << b << std::endl;});dispatcher.appendListener(2, [](int a, const std::string &b) {std::cout << "Listener 2 callwed with a = " << a << ", b = " << b << std::endl;});dispatcher.appendListener(2, [](int a, const std::string &b) {std::cout << "Listener 2(2) callwed with a = " << a << ", b = " << b << std::endl;});dispatcher.appendListener(2, [](int a, const std::string &b) {std::cout << "Listener 2(3) callwed with a = " << a << ", b = " << b << std::endl;});dispatcher.dispatch(1, 11, "Hello from listener 1");dispatcher.dispatch(2, 11, "Hello from listener 2");dispatcher.dispatch(2, 11, "Hello from listener 2 again");dispatcher.dispatch(3, 11, "Hello from listener 3 ");return 0;
}

执行结果

➜  test g++ -o test eventpp_test_dispatcher.cc -I eventpp/include/
➜  test ./test
Listener 1 callwed with a = 11, b = Hello from listener 1
Listener 2 callwed with a = 11, b = Hello from listener 2
Listener 2(2) callwed with a = 11, b = Hello from listener 2
Listener 2(3) callwed with a = 11, b = Hello from listener 2
Listener 2 callwed with a = 11, b = Hello from listener 2 again
Listener 2(2) callwed with a = 11, b = Hello from listener 2 again
Listener 2(3) callwed with a = 11, b = Hello from listener 2 again
➜  test

1.3 使用 eventpp::Eventqueue

程序

#include <iostream>
#include <string>
#include <thread>
#include <eventpp/eventqueue.h>int main(int argc, char *artv[]) {using EQ = eventpp::EventQueue<int, void(int)>;EQ queue;// consumer threadstd::thread consumer([&queue]() {queue.appendListener(1, [&queue](int a) {std::cout << "Listener 1 called with a = " << a << std::endl;queue.process();});queue.appendListener(2, [&queue](int a) {std::cout << "Listener 2 called with a = " << a << std::endl;queue.process();});// while(1) {queue.wait();queue.process();// }});// producer thread{EQ::DisableQueueNotify disableNotify(&queue);queue.enqueue(1, 1);queue.enqueue(1, 1);queue.enqueue(2, 2);queue.enqueue(1, 11);queue.enqueue(2, 22);}consumer.join();return 0;
}

执行结果

➜  test g++ -o test eventpp_test_eventqueue.cc -I eventpp/include
➜  test ./test
Listener 1 called with a = 1
Listener 1 called with a = 1
Listener 2 called with a = 2
Listener 1 called with a = 11
Listener 2 called with a = 22
➜  test 

http://www.dtcms.com/a/490933.html

相关文章:

  • uni-app Vue 项目的规范目录结构全解
  • 在线预约导游|基于SSM+vue的在线预约导游系统(源码+数据库+文档)
  • 网站你懂我意思正能量免费网站推广策划的流程
  • 信宜网站建设公司厦门 网站建设
  • 免费建立网站的平台wordpress简体中文版下载
  • 在小车上挂载nfs
  • C# 开发最新趋势:在性能与智能的浪潮中乘风破浪
  • EL817S1(C)(TU)-F 晶体管输出光耦合器 EVERLIGHT亿光 高隔离电压 电子解析
  • 河北建设厅录入业绩的网站营销方案100例
  • 品牌营销专家:为企业发展注入强劲动力
  • MS2107高性能USB 2.0视频信号和音频采集,支持NTSC/PAL制式,适用于低成本视频采集设备
  • 利用R绘制条形图
  • 解决Redis数据丢失难题:深入理解RDB与AOF持久化机制
  • 自己买一台服务器做自己的网站浙江省城乡建设厅官方网站
  • ARM处理器指令集
  • Day64 设备树与GPIO子系统驱动开发实践
  • 贝莱德终止收购云交所,YUNC暴跌风波
  • 源码网站php重庆观音桥网站建设
  • SWE-QA:语言模型能否回答仓库级代码问题?
  • 建功能网站有没有专业做效果图的网站
  • 做网站 教程做国外网站推广
  • k8s容器java应用频繁重启问题排查 OOM方向
  • 宁夏建设工程造价网站做pc端网站新闻
  • Spring Boot + Filebeat + ELK日志在线查看
  • 使用高性能流式的库SpreadCheetah创建EXCEL文件
  • 【西瓜播放器+Vue】前端实现网页短视频:上下滑动、自动播放、显示视频信息等
  • 软件下载网站模版html软件下载手机版
  • 哪些平台可以免费推广广州百度提升优化
  • Redis-缓存问题(穿透、击穿、雪崩)
  • Mysql数据库系统库数据恢复