成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

C++發布訂閱者模式:實現簡單消息傳遞系統

開發 后端
將為你提供一個簡單的C++實例,演示如何使用發布者-訂閱者模式。在這個例子中,我們將使用C++11的標準庫中的 <functional> 頭文件,以及線程支持。

概述:這個C++示例演示了發布者-訂閱者模式的基本實現。通過 `Event` 類,發布者 `Publisher` 發送數據,而訂閱者 `Subscriber` 訂閱并處理數據。通過簡單的回調機制,實現了組件間松散耦合的消息傳遞。

好的,我將為你提供一個簡單的C++實例,演示如何使用發布者-訂閱者模式。在這個例子中,我們將使用C++11的標準庫中的 <functional> 頭文件,以及線程支持。

首先,我們定義一個簡單的事件類,該事件類將用于攜帶消息:

// Event.h
#pragma once

#include <functional>

template <typename... Args>
class Event {
public:
    using Callback = std::function<void(Args...)>;

    void subscribe(Callback callback) {
        callbacks_.emplace_back(std::move(callback));
    }

    void notify(Args... args) const {
        for (const auto& callback : callbacks_) {
            callback(args...);
        }
    }

private:
    std::vector<Callback> callbacks_;
};

接下來,我們定義一個發布者類,它將包含一個事件對象,并提供一個方法來觸發該事件:

// Publisher.h
#pragma once

#include "Event.h"

class Publisher {
public:
    Event<int> onDataReceived;

    void sendData(int data) {
        // 假設在這里進行一些數據處理
        onDataReceived.notify(data);
    }
};

然后,我們定義一個訂閱者類,它將訂閱發布者的事件并定義處理函數:

// Subscriber.h
#pragma once

#include "Event.h"
#include <iostream>

class Subscriber {
public:
    void processData(int data) {
        std::cout << "Received data: " << data << std::endl;
    }
};

最后,我們將創建一個主函數來演示發布者和訂閱者的使用:

// main.cpp
#include "Publisher.h"
#include "Subscriber.h"
#include <thread>

int main() {
    Publisher publisher;
    Subscriber subscriber;

    // 訂閱者訂閱發布者的事件
    publisher.onDataReceived.subscribe([&subscriber](int data) {
        subscriber.processData(data);
    });

    // 模擬數據發送
    for (int i = 1; i <= 5; ++i) {
        publisher.sendData(i);
        std::this_thread::sleep_for(std::chrono::seconds(1));
    }

    return 0;
}

在這個例子中,我們創建了一個簡單的發布者 Publisher 類,它包含一個 Event 對象,該對象具有整數參數類型。訂閱者 Subscriber 類定義了一個處理函數 processData,該函數將在收到數據時被調用。在主函數中,我們創建了發布者和訂閱者的實例,并通過調用 onDataReceived.subscribe 將訂閱者訂閱到發布者的事件。然后,我們通過調用 sendData 模擬發布者發送數據,訂閱者的處理函數將被調用。

這只是一個簡單的示例,實際應用中可能需要更復雜的實現,以處理多個事件和更多的數據類型。

責任編輯:姜華 來源: 今日頭條
相關推薦

2022-12-02 07:28:58

Event訂閱模式Spring

2015-01-27 10:25:42

消息系統Kafka

2022-08-15 09:02:22

Redis模式訂閱消息

2024-05-14 08:03:51

C#EventArgs?屬性

2022-06-27 13:56:10

設計模式緩存分布式系統

2023-07-10 09:18:39

Redis訂閱模型

2025-03-11 09:30:00

2025-01-09 11:15:47

2023-11-10 09:22:06

2009-11-05 10:07:37

WCF設計模式

2024-04-08 08:12:43

事件驅動訂閱機制

2023-05-17 08:16:04

RabbitMQ消息傳遞

2024-05-06 11:19:20

內存池計算機編程

2021-11-08 11:32:01

觀察

2009-08-19 09:57:01

C++ RAII

2010-02-03 09:43:16

C++單例模式

2010-02-06 13:42:36

C++單件模式

2024-07-22 14:34:20

簡單工廠模式C#

2009-08-19 10:09:21

C#和C++

2024-10-11 11:50:05

Redis適用場景
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产日韩免费视频 | www.天堂av.com| 亚洲午夜精品一区二区三区 | 色吧综合网 | 91天堂| 精品国产不卡一区二区三区 | 91亚洲国产亚洲国产 | 麻豆视频国产在线观看 | 欧美成人自拍视频 | 在线色 | 成人精品国产 | 国产综合久久久久久鬼色 | av在线播放网址 | 国产精品欧美一区二区 | 在线成人免费视频 | 日韩中文在线视频 | 天天操操操操操 | 国产精品九九九 | 成人国产精品久久 | 大乳boobs巨大吃奶挤奶 | 一区二区三区在线免费观看视频 | 中文字幕乱码视频32 | 亚洲午夜视频 | 最近中文字幕第一页 | 亚洲欧美一区二区三区视频 | 在线免费观看a级片 | 亚洲精品一区二区久 | 国产在线中文字幕 | 欧美亚洲视频 | 三级在线视频 | 成人午夜精品一区二区三区 | 91在线视频观看 | 久久久国产一区二区三区 | 欧美一区二区在线观看 | 成人久草| 欧美高清视频在线观看 | 成人福利片 | 久久久精品一区 | 国产精品精品视频一区二区三区 | 亚洲人成人一区二区在线观看 | 日韩高清中文字幕 |