`
chriszeng87
  • 浏览: 738472 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Signals、sigslot简介

阅读更多

      在复杂的工程中,整个系统被分为数个模块,每个模块提供有限的功能,由上层调用从而组成整个系统,为了保证每个模块的独立性,我们经常限制模块与模块之间直接联系,每个模块只提供有限的API或Com接口,内部完全封装起来。

       有时候两个不同的逻辑层的模块需要通信,如果直接include头文件会使项目变的复杂,sigslot的出现为我们提供了一种解决问题的思想,它用“信号”的概念实现不同模块之间的传输问题,sigslot本身类似于一条通讯电缆,两端提供发送器和接收器,只要把两个模块用这条电缆连接起来就可以实现接口调用,而sigslot本身只是一个轻量级的作品,整个库只有一个.h文件,所以无论处于何种层次的库,都可以非常方便的包含它。



举个例子,我们设计一个发送消息的类,这个类负责在某种时刻向外界发出求救信号

#include "sigslot.h"

class Sender  
{
public:
    // 定义信号,该信号有两个参数
    sigslot::signal2< std::string , int > SignalDanger;
    
    // 该函数发送消息
    void Panic()
    {
        SignalDanger("Help!", 0); 
    }
};



另外一个类则负责接收求助信号

class Receiver : public sigslot::has_slots<>
{
public:
    // 接收SignalDanger 信号的函数,该函数参数必须和信号的参数一致
    void OnDanger(std::string message, int time)
    {
        printf("I heard something like "%s" at %d!n", message.c_str(), time);
    }
};

现在让我们在主逻辑中把这两个类连接起来

Sender sender;
Receiver receiver;

// 将发送者的信号连接到接收方的接收函数上;和断开连接
sender.SignalDanger.connect(&receiver, Receiver::OnDanger);

sender.SignalDanger.disconnect(&receiver);

只要在任何时候调用 sender.Panic()函数,就会把求救信号发送给接收者,而且这两个发送和接收端的模块都可以独立编译,不会出现版本问题。

libjingle命名规则:
信号命名:signal....
收到信号:on...

 

转自:http://blog.sina.com.cn/s/blog_733236dd01012ndt.html

分享到:
评论

相关推荐

    sigslot信号槽 c++库

    Sigslot是C++中一种实现信号(signals)与槽(slots)机制的库,它提供了一种方便的方式来处理对象间的通信。在C++的世界里,信号与槽是一种事件驱动编程模型,广泛应用于GUI编程和多线程环境中。下面将详细阐述这个...

    sigslot C++开源库-解决信号对象拷贝问题.zip

    Sigslot 是一个小型但功能强大的 C++ 开源库,专门用于实现信号(signals)和槽(slots)机制。这个库的特色在于它只有一个头文件 `sigslot.h`,因此非常便于集成到任何项目中,无需额外的编译步骤或依赖。在 C++ 中...

    sigslot_g++4.0下也能编译

    sigslot是一种C++库,用于实现信号(signals)和槽(slots)机制,这是事件驱动编程中的一个关键概念。 信号与槽是Qt框架中的一个核心特性,但sigslot是一个独立的、轻量级的实现,它允许对象之间进行异步通信。在...

    Radar Signals

    Radar Signals: An Introduction to Theory and Application introduces the reader to the basic theory and application of radar signals that are designated as large time-bandwidth or pulse-compression ...

    Spectral Analysis of Signals(Petre Stoica and Randolph Moses) 下半部分

    ### Spectral Analysis of Signals: Spatial Methods - The Modulation-Transmission-Demodulation Process #### Introduction to Bandpass and Baseband Signals In the context of spectral analysis, ...

    Signals.and.SystemsOppenheim.EN.pdf

    - **Signals.and.SystemsOppenheim.EN.pdf**:这表明文档主要关注信号处理和系统分析领域,由Alan V. Oppenheim等人编著。 #### 描述解读: - **Signals.and.SystemsOppenheim.EN.pdf**:重复标题信息,强调该文档...

    前端项目-js-signals.zip

    "前端项目-js-signals.zip" 提供了一个自定义事件/消息系统,它基于 "js-signals" 库,这是一种轻量级的解决方案,用于在JavaScript对象之间传递信息。这个库尤其适用于那些希望避免使用传统DOM事件或者jQuery的事件...

    Signals and Systems - 2nd Edition Oppenheim Solutions

    但我可以提供关于《Signals and Systems - 2nd Edition Oppenheim Solutions》这本书的详细知识点。这本书是关于信号与系统的,由Alan V. Oppenheim所著,是信号处理和系统分析领域内的一部经典教材。 《信号与系统...

    Signals and Systems using Matlab, Luis Chaparro, Academic Press, 1st

    由于您提供的信息包含了版权信息和部分内容的摘录,这段内容主要用于标识书籍的版权信息,关于“Signals and Systems using Matlab”具体知识点的描述并不详尽。根据您提供的信息,我会尽力从中提取关于《Signals ...

    Signals and Systems 2nd(Simon Haykin)

    信号与系统, 西蒙霍金 Signals and Systems 2nd(Simon Haykin).pdf

    Unambiguous BOC Modulated Signals Synchronization Technique.pdf

    In this letter, a new unambiguous tracking technique is proposed for binary offset carrier (BOC) modulated signals, which will be utilized in global navigation satellite systems (GNSS). The proposed ...

    super-signals - MetaTrader 5脚本.zip

    本文将深入探讨一个名为"super-signals"的MT5脚本,这是一款专门用于识别趋势变化的信号箭头指标。 "super-signals"脚本的核心功能在于帮助交易者捕捉市场趋势的转折点。在快速波动的金融市场上,及时准确地识别...

    Super_Signals_Channel_V2 - MetaTrader 5脚本.zip

    《MetaTrader 5中的Super_Signals_Channel_V2脚本详解》 在金融交易领域,技术分析工具扮演着至关重要的角色,其中MetaTrader 5(MT5)交易平台因其丰富的功能和自定义指标库深受交易者喜爱。今天我们将深入探讨一...

    Signals and Systems (Girod)

    《信号与系统》是信号处理与系统理论领域内的一本重要教科书,由Bernd Girod、Rudolf Rabenstein以及Alexander Stenger三位专家共同撰写。本书深入探讨了信号与系统的理论基础、分析方法及应用场景,是电子工程、...

    Ultimate_Trend_Signals_binary_

    "Ultimate Trend Signals" 提供了一套全面的交易信号系统,旨在帮助交易者识别市场趋势,提高决策的准确性和效率。这套系统结合了多种技术指标,为交易者提供了多维度的市场洞察。 一、趋势识别的重要性 在金融...

    32-signals.rar

    "32-signals.rar"这个压缩包文件显然包含了关于Linux和UNIX系统编程的一个重要主题——信号(Signals)。信号是操作系统用于在进程间通信和处理异常情况的一种机制,它们在系统编程中扮演着关键角色。下面我们将详细...

    KI_signals_v2 - MetaTrader 5脚本.zip

    《MetaTrader 5趋势指标——KI_signals_v2脚本详解》 在金融交易领域,MetaTrader 5(MT5)是一款广泛使用的交易平台,它提供了丰富的技术分析工具和自动化交易功能。"KI_signals_v2 - MetaTrader 5脚本.zip" 是一...

    Trade Signals Based on Reversal Candlestick Patterns

    The CSignalCandles class provides trade signals, based on reversal candlestick patterns. The strategy called "Signals based on reversal candlestick patterns

Global site tag (gtag.js) - Google Analytics