webRTC base模块SigSlot信号与槽实现
来源:互联网 发布:淘宝跳蚤街在哪 编辑:程序博客网 时间:2024/06/09 16:52
SigSlot
非常经典的信号/槽结构 在Qt中同样存在信号/槽机制用于通讯
Qt下信号/槽
QT signal/slot http://blog.csdn.net/qq_21358401/article/details/78736796
SigSlot的应用
SigSlot的构成比较复杂但应用非常简单 所以这里先分析其用法
总结起来就两点
以两参数的signal2为例1. 利用 sigslot::signal2<string,string> signal_; string str1, str2; 利用既定的信号模板 指定要通过信号发送的数据类型 并在要发送信号时 signal_(str1, str2);2. 接收类需要继承 class test : public sigslot::has_slots<> { void recv(string msg1, string msg2) { cout << "rcv 1:" << msg1 << "rcv 2:" << msg2 << endl; } }
非常简单的调用 和Qt中的信号与槽并无区别
完整示例代码
#include <iostream>#include <queue>#include <memory>#include <string>#include <csignal>#include "pthread.h"#include "webrtc/base/sigslot.h"using namespace std;class sender {public: sigslot::signal2<string, char *> signal_; char str[20]; char a; void send() { static int val = 0; snprintf(str, 20, "%s", "sliver.chen"); printf("my address is 0x%x\n", &a); signal_(this->str, &a); }};class recver : public sigslot::has_slots<> {public: void OnDanger(string msg, char *p) { cout << msg << endl; printf("addr:%x\n", p); }};int main(int argc, char **argv) { int ret = 0; sender s; recver r; s.signal_.connect(&r, &recver::OnDanger); int i = 0; while (i++ < 10) { s.send(); } return 0;}
示例代码还验证了一个规则:信号与槽发送的数据是拷贝的 故而如果想要传递数据 可以通过传递数据的指针来实现.
参考代码git地址:
sigslot 参考代码 https://github.com/sliver-chen/webRTCTutorial/blob/master/SigSlot/SigSlot.cpp
SigSlot的实现
阅读全文
0 0
- webRTC base模块SigSlot信号与槽实现
- webRTC base模块Event事件的实现
- webRTC base模块SharedExclusiveLock读写锁实现
- webRTC base模块CritScope临界锁的实现
- webRTC base模块MessageQueue消息队列的实现
- webrtc中的 sigslot
- [sigslot] WebRTC sigslog.h
- webrtc中的sigslot的使用
- 信号槽库:sigslot.h和sigc++使用
- C++中的“信号和槽”机制,sigslot.h
- Webrtc delay-base-bwe代码分析(1): RateStatistics模块
- Webrtc delay-base-bwe代码分析(2): InterArrival模块
- Webrtc delay-base-bwe代码分析(3): OveruseEstimator模块
- Webrtc delay-base-bwe代码分析(4): OveruseDetector模块
- Webrtc delay-base-bwe代码分析(5): AimdRateControl模块
- Sigslot - WebRTC中的事件处理机制
- webrtc sigslot 使用以及源码分析
- sigSlot 简单的信号插槽例子
- 因子分解机
- 数据库
- IIS7 配置 SSL站点
- (云主机&虚拟机)centos7安装nginx
- 数据结构之排序6--冒泡排序
- webRTC base模块SigSlot信号与槽实现
- windows下双python环境下django初探
- 记有赞电话面试经历
- codeforce897C
- B
- 【bzoj 1002】 轮状病毒 [FJOI2007]
- LeetCode 166. Fraction to Recurring Decimal
- centos系统添加网卡
- (6)MyBatis小总结:一个简单的例子--接口编程改进