代码拉取完成,页面将自动刷新
A lightweight event bus that implements publish-subscribe based on C++17.
基于C++17实现发布订阅的轻量级事件总线。
1.定义一个结构体
struct person
{
std::string name;
std::uint16_t age;
std::string telephone_number;
};
2.定义一个消息令牌
const std::string send_person_token = "send_person_token";
3.实现消息发布
/// <summary>
/// 获取事件总线默认实例。
/// </summary>
event_bus& bus = event_bus::get_default();
/// <summary>
/// 发布消息。
/// </summary>
void publisher::publish_message() const
{
person p;
std::vector<person> p_vector;
p_vector.reserve(100000);
for (size_t i = 0; i < 1000; i++)
{
p.name = "xiao li zi";
p.age = 99;
p.telephone_number = "19911110000";
p_vector.push_back(std::move(p));
}
bus.publish(send_person_token, p_vector);
}
4.实现消息订阅
auto subscribe_message = [&](const std::vector<person>& p_vector)
{
const auto p = p_vector.back();
const string str = string_format("%s name:%s age:%d telephone_number:%s", get_current_datetime_string().c_str(),
p.name.c_str(), p.age, p.telephone_number.c_str());
cout << str << endl;
};
bus.subscribe<std::vector<person>>(send_person_token, subscribe_message);
该项目根据MIT许可证授权。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。