CAF 正在参加 2020 年度 OSC 中国开源项目评选,请投票支持!
CAF 在 2020 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票让它出道
已投票
CAF 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」 !
CAF 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」「最积极运营项目」 !
CAF 获得 2020 年度 OSC 中国开源项目评选「最积极运营项目」 !
授权协议 BSD
开发语言 C/C++ 查看源码 »
操作系统 跨平台
软件类型 开源软件
开源组织
地区 不详
投 递 者 newzai
适用人群 未知
收录时间 2015-07-29

软件简介

CAF —— C++ actor 模型框架,借鉴了 erlang 和 akka 的actor思想。使用C++现代编程规模实现。特点是:轻量级、分布式、简单、可适应以及无锁。

下载和构建:

git clone https://github.com/actor-framework/actor-framework
cd actor-framework
./configure
make
make install [as root, optional]

示例代码:

#include <string>
#include <iostream>

#include "caf/all.hpp"

using namespace std;
using namespace caf;

behavior mirror(event_based_actor* self) {
    // return the (initial) actor behavior
    return {
        // a handler for messages containing a single string
        // that replies with a string
        [=](const string& what) -> string {
            // prints "Hello World!" via aout
            // (thread-safe cout wrapper)
            aout(self) << what << endl;
            // terminates this actor
            // ('become' otherwise loops forever)
            self->quit();
            // reply "!dlroW olleH"
            return string(what.rbegin(), what.rend());
        }
    };
}

void hello_world(event_based_actor* self, const actor& buddy) {
    // send "Hello World!" to our buddy ...
    self->sync_send(buddy, "Hello World!").then(
        // ... wait for a response ...
        [=](const string& what) {
            // ... and print it
            aout(self) << what << endl;
        }
    );
}

int main() {
    // create a new actor that calls 'mirror()'
    auto mirror_actor = spawn(mirror);
    // create another actor that calls 'hello_world(mirror_actor)';
    spawn(hello_world, mirror_actor);
    // wait until all other actors we have spawned are done
    await_all_actors_done();
    // run cleanup code before exiting main
    shutdown();
}
展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论 (1)

加载中
打分: 力荐
C++的Actor并发框架(基于stackful/stackless) https://git.oschina.net/hamasm/cpp-actor-framework
2017/02/04 16:42
回复
举报
更多评论
暂无内容
发表于软件架构专区
2020/06/24 07:28

下一代的 Actor 模型框架 Proto Actor

ProtoAct 是下一代的 Actor 模型框架,提供了 .NET 和 Go 语言的实现,默认支持分布式,提供管理和监控功能。在过去几年,我们经常看到两种 Actor 模型方法相互竞争,首先是经典的 Erlang/Akka 风格的 Actor 模型;以及微软的“虚拟Actor”或者成为“Grains” 的风格。这两种风格有各自的优缺点。 而 Proto.Actor 将这两种风格结合在一起形成一个通用的框架。同时解决了另外一个主要的问题 —— 目前已有的 Actor 框架或者是语言...

0
0
2015/01/05 11:01

Actor Model

Actor Model The actor model in computer science is a mathematical(数学的) model of concurrent computation(计算) that treats "actors" as the universal primitives(通用原语) of concurrent computation: in response to a message that it receives, an actor can make local decisions, create more actors, send more messages, and determine how to respond to the next message received. The actor model ...

0
0
2020/04/12 17:50

Actor Systems

# Actor Systems Actors are objects which encapsulate state and behavior, they communicate exclusively by exchanging messages which are placed into the recipient’s mailbox. In a sense, actors are the most stringent form of object-oriented programming, but it serves better to view them as persons: while modeling a solution with actors, envision a group of people and assign sub-tasks to them, arr...

0
0
发表于服务端专区
2015/05/27 10:12

Akka actor

package akka import akka.actor.Actor import akka.actor.ActorSystem import akka.actor.Props class HelloActor extends Actor {   def receive = {     case "hello" => println("world")     case _       => println("huh?")   } } package akka import akka.actor.ActorSystem import akka.actor.Props object Test{      val system = ActorSystem("HelloSystem") ...

0
1
发表于服务端专区
2015/01/07 15:42

Actor Path

Actor Path Actor路径组成 在理解Actor系统这篇文章中我们知道,actor是以一种严格的层级结构方式被创建的。这有点类似一个文件系统,文件夹内又包含子文件夹,子文件夹又包含子子文件夹,以此类推。我们可以把这个文件系统看成一个文件树。每一个节点都只有唯一的一个访问路径。actor 系统也是如此,这个访问路径就是actor的路径。 actor路径地址由各个路径元素连接,从根节点一直到最终的actor。这些路径元素就是在寻找这个a...

0
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
暂无内容
1 评论
43 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部