Actor模型实现C++框架:CAF

jopen 9年前

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

项目主页:http://www.open-open.com/lib/view/home/1438242489019