| 注册
请输入搜索内容

热门搜索

Java Linux MySQL PHP JavaScript Hibernate jQuery Nginx
jopen
9年前发布

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

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

 本文由用户 jopen 自行上传分享,仅供网友学习交流。所有权归原作者,若您的权利被侵害,请联系管理员。
 转载本站原创文章,请注明出处,并保留原始链接、图片水印。
 本站是一个以用户分享为主的开源技术平台,欢迎各类分享!
 本文地址:https://www.open-open.com/lib/view/open1438242489019.html
CAF C/C++开发