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(); }
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!