CAF

C++ actor 模型框架
授权协议 BSD
开发语言 C/C++
所属分类 程序开发、 并发/并行处理框架
软件类型 开源软件
地区 不详
投 递 者 郑博厚
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

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();
}
  • 一. 描述. caf是一个actor模型的开源编程框架,  强c++11风格的实现, 早先的名字并不叫CAF, 而是CPPA. 改名的时间发生在版本(0.9 >> 0.10). 而最近的版本 是0.11.2, 从文档上看, caf的实现参考了akka和erlang.  默认的actor调度是基于线程池方式, 而不是协程. 因此更像akka. 由于caf是基于c++的实现,  在性能上可能更占优势.

  • 简介 CAF 是 C++ Actor 模型框架,借鉴了 erlang 和 akka 的 actor 思想。有强 C++ 11 特性。 特点是:轻量级,分布式,简单,可适应以及无锁。 官方文档:https://actor-framework.readthedocs.io/en/latest/index.html Github地址: https://github.com/actor-framework

  • 这几年做了许多涉及到音视频的app,里面有很多时候需要要转换格式,比如在合成拼接的时候,或者与服务器所需格式不一致的时候。我在此总结了几种常见格式间的互相转换。希望能帮到广告开发同行们。 一、m4a格式转caf格式 /** 把.m4a转为.caf格式 @param originalUrlStr .m4a文件路径 @param destUrlStr .caf文件路径 @param completed

 相关资料
  • 有类型Actor是Active Objects 模式的一种实现。Smalltalk诞生之时,就已经缺省地将方法调用从同步操作换为异步派发。 有类型Actor由两 “部分” 组成, 一个公开的接口和一个实现, 如果你有“企业级”Java的开发经验, 则应该非常熟悉。 对普通actor来说,你拥有一个外部API(公开接口的实例)来将方法调用异步地委托给其实现的私有实例。 有类型Actor相对于普通Ac

  • Actor 和 Critic, 他们都能用不同的神经网络来代替 . 在 Policy Gradients 的影片中提到过, 现实中的奖惩会左右 Actor 的更新情况. Policy Gradients 也是靠着这个来获取适宜的更新. 那么何时会有奖惩这种信息能不能被学习呢? 这看起来不就是 以值为基础的强化学习方法做过的事吗. 那我们就拿一个 Critic 去学习这些奖惩机制, 学习完了以后.

  • The Actor DSL 简单的actor——例如一次性worker甚或至在REPL中尝试的事物——可以更简洁地使用Act特质创建。支持的基础设施通过以下导入绑定: import akka.actor.ActorDSL._ import akka.actor.ActorSystem implicit val system = ActorSystem("demo") 在这一节的所有代码示例都假

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

  • Actor Messaging platform 是一个即时通讯平台,它提供了多种特性,例如:大型群组聊天;无限制历史存储;收发文件、图片、视频; 电话号码/电子邮件或 OAuth2 一次性密码认证;轻松集成外部服务。 Actor 拥有对 Android, iOS,和Web 最好 IM app 之一,特别是应对糟糕的网络连接状态,它支持完全离线的消息和文件存储,自动创建联系人列表。 当前可用的客户

  • Actor是封装状态和行为的对象,他们唯一的通讯方式是交换消息——把消息存放在接收方的邮箱里。从某种意义上来说,actor是面向对象最严格的形式,不过最好把它们比作人:在使用actor来对解决方案建模时,把actor想象成一群人,把子任务分配给他们,将他们的功能整理成一个有组织的结构,考虑如何将失败逐级上传(好在我们并不需要真正跟人打交道,这样我们就不需要关心他们的情绪状态和道德问题)。这个结果就

  • 在深入到模块进行分析之前,首先来看看Tornado的设计模型。 Tornado框架设计模型 从上面的图可以看出,Tornado 不仅仅是一个WEB框架,它还完整地实现了HTTP服务器和客户端,在此基础上提供WEB服务。它可以分为四层: 最底层的EVENT层处理IO事件; TCP层实现了TCP服务器,负责数据传输; HTTP/HTTPS层基于HTTP协议实现了HTTP服务器和客户端; 最上层为WEB