SObjectizer 开源框架指南

SObjectizer 开源框架指南

sobjectizer An implementation of Actor, Publish-Subscribe, and CSP models in one rather small C++ framework. With performance, quality, and stability proved by years in the production. sobjectizer 项目地址: https://gitcode.com/gh_mirrors/so/sobjectizer

1. 项目介绍

SObjectizer 是一个跨平台且开源的 C++ "演员框架",它不仅仅支持经典的Actor模型,还融入了**发布-订阅(Publish-Subscribe)**模型以及类似CSP(Communicating Sequential Processes)的通道概念。自1995至2000年的思想基础上发展而来,并从2002年开始持续演进至今,SObjectizer-5版本自2010年起不断进化。此框架旨在显著简化C++并发和多线程应用程序的开发,通过异步消息让代理对象间互动,提供消息分发及处理上下文,且支持多种预配置的调度器进行定制。

特性包括成熟稳定、适用于业务关键应用、跨平台兼容性(Windows、Linux、FreeBSD、macOS、Android)、易于使用、免费的BSD-3-Clause许可等,区别于TBB、taskflow、HPX等并行计算工具,专注于并发编程而非平行计算。

2. 项目快速启动

要快速启动SObjectizer,首先确保您的环境满足Cpp-17的要求。以下是简单的示例,展示如何启动一个“Hello, World!”程序。

#include <so_5/all.hpp>

class hello_actor final : public so_5::agent_t {
public:
    explicit hello_actor(so_5::environment_t & env)
        : so_5::agent_t{env} {}
    
    void so_evt_start() override {
        std::cout << "Hello, World!" << std::endl;
        so_deregister_agent_coop_normally();
    }
};

int main() {
    so_5::launch([](so_5::environment_t & env) {
        env.register_agent_as_coop(std::make_unique<hello_actor>(env));
    });
    return 0;
}

编译运行上述代码前,需安装SObjectizer并正确配置编译环境。

3. 应用案例和最佳实践

简单的Ping-Pong游戏

SObjectizer非常适合实现消息传递场景,如通过两个代理实现的 Ping-Pong 示例:

// 省略结构体ping和pong定义
class pinger final : public so_5::agent_t { /* ... */ };
class ponger final : public so_5::agent_t { /* ... */ };

int main() {
    so_5::launch([](so_5::environment_t & env) {
        env.introduce_coop([](so_5::coop_t & coop) {
            auto pinger_actor = coop.make_agent<pinger>();
            auto ponger_actor = coop.make_agent<ponger>(pinger_actor->so_direct_mbox());
            pinger_actor->set_ponger(ponger_actor->so_direct_mbox());
        });
    });
    return 0;
}

此模式展示了如何通过SObjectizer轻松地创建具有交互式消息代理的复杂逻辑。

4. 典型生态项目

由于SObjectizer的设计哲学,其主要用于构建并发应用,比如在金融系统中实现高可用的服务代理、物联网(IoT)中的设备控制、分布式系统中的消息队列服务等。遗憾的是,具体的生态项目例子较少直接公开提及,但SObjectizer的强大在于其灵活应用于多任务并发场合的能力,鼓励开发者在其上构建符合特定需求的应用解决方案。


以上就是基于SObjectizer开源项目的基础指南,包含了快速上手示例及简要介绍了该框架的几个应用场景。深入探索SObjectizer,可以访问其详细的官方文档和GitHub仓库获取更多高级特性和案例研究。

sobjectizer An implementation of Actor, Publish-Subscribe, and CSP models in one rather small C++ framework. With performance, quality, and stability proved by years in the production. sobjectizer 项目地址: https://gitcode.com/gh_mirrors/so/sobjectizer

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

管雅姝

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值