C++ actor 模型框架 CAF

BSD
C/C++
跨平台
2015-07-29
newzai

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();
}
加载中

评论(1)

HAM-2015
HAM-2015
C++的Actor并发框架(基于stackful/stackless) https://git.oschina.net/hamasm/cpp-actor-framework

暂无资讯

暂无问答

通过Typesafe Activator创建akka java sample

通过Typesafe Activator创建akka java sample

2015/01/07 15:21
1K
0
Actor Model

Actor Model

2015/01/05 11:01
194
0
Concurrency and Fault Tolerance Made Easy: An Akka Tutorial with Examples

Akka is a toolkit and runtime for building highly concurrent, distributed, and fault tolerant applications on the JVM. Akka is written in Scala, with language bindings provided ...

2016/12/04 17:46
6
0
C++ 并发编程的一种思维

愈发紧迫的挑战 现今,单台机器拥有多个独立的计算单元已经太常见了,这点在服务器的处理器上表现尤为明显,据 AMD 的一张 2012-2013 服务器路线图显示,服务器处理器的核心数将在 2013 年达...

2012/08/13 20:49
259
0
What are the differences between Akka and Netty?

What are the differences between Akka and Netty besides their choice of language (Scala vs Java)?...

2015/12/24 11:37
397
0
Kamon 和 Statsd, Graphite, Grafana

监控分布式应用本来就是一个困难的事情,每个线程每个任务都在随机的硬件实例上执行,茫茫多的日志,有意设计的Failure Tolerance 都使定位、debug一个问题变得不太可能。 最近为了监控akka项...

2016/07/20 15:06
688
2
JB4.2:添加一个SwithButton控制ShutterSound

在Andoird JB 4.2中,Camera的代码有非常大的变动,不管是frameworks,还是APP。逻辑更加严谨,google里的程序员真的很喜欢用设计模式,到处都可以看到设计模式的影子,刚刚拿到JB4.2源码的时...

2013/03/11 19:51
888
2
Scala框架选择

我所知道的Scala持久层框架有: 1、Slick (typesafe出品) 2、Squeryl 3、Anorm(Play的持久层) 4、ScalaActiveRecord (基于Squeryl之上) 5、circumflex-orm 6、activate-framework(不只...

2014/08/16 21:01
5K
0
5个让人激动的Java项目

1.Neo4j 图形数据库 Neo4j是一个高性能图形引擎,该引擎拥有成熟稳健的数据库的所有特性。程序员利用面向对象、灵活网络结构而不是严格的静态表操作,但是他们可以完全享受到具备完全事务特性...

2013/09/25 09:41
417
0
一款同步异步一体的代码编程框架DActor

DActor框架可同时支持同步和异步代码,简化在线异步代码的开发,用同步代码的思维来开发异步代码,兼顾异步代码的高并发、无阻塞和同步代码的易读性,可维护性。 基于协程思想设计 最大程度的...

02/15 10:27
18
0

没有更多内容

加载失败,请刷新页面

返回顶部
顶部