看usermanual(使用随笔一里面有)看到差不多一半的时候,这个keep_behavior与unbeacome的结合引起了我的注意。(这是为什么呢?)

  因为它的示例代码写的太简单了!我真的没看太懂,我就自己把他的改了改放上来。

先讲一下,基本概念,就是一个actor可以有多个行为(behavior)那么become就可以让一个actor变成一种行为。

如果使用了keep_behavior呢就会把当前的行为压入“行为栈”(behavior stack),  调用unbecome就可以变成行为栈上最前面的一个了。

比如我先在行为A的时候keep_behavior,后来我再在行为B的时候keep_behavior一下,那么我此时调用unbecome的时候会变成哪个种行为呢?答案当然是行为B咯!

贴上代码

#include <string>
#include <iostream>
#include "caf/io/all.hpp"
#include "caf/all.hpp"
using namespace std;
using namespace caf;behavior testee(event_based_actor* self) {return {[=](int value1) {cout<<"value1:"<<value1<<endl;self->become (keep_behavior,[=](float value2) {cout << "value2:" << value2 << endl;self->become (keep_behavior,[=](double value3){cout<<"value3:"<<value3<<endl;self->unbecome();});});}};
}int main(){auto actor1 = spawn(testee);{caf::scoped_actor self;int a1 = 1;float a2 = 1.1;double a3 = 1.2;int b1 = 2;float b2 = 2.1;double b3 = 2.2;self->send(actor1,a1);self->send(actor1,a2);self->send(actor1,a3);self->send(actor1,b1);self->send(actor1,b2);self->send(actor1,b3);}caf::await_all_actors_done();shutdown();return 0;
}

结果为

如果把value2循环中的keep_behavior去掉结果就是

之后开始准备写caf序列化方面。真的是挺好用,挺炫酷。

最后弱弱的说一句,求互粉阿!

转载于:https://www.cnblogs.com/zhejiangxiaomai/p/5257937.html

CAF(C++ actor framework)使用随笔(unbecome与keep_behavior用法)相关推荐

  1. “幕后英雄”之Backing Fields【Microsoft Entity Framework Core随笔】

    刘德华 有一首歌叫<马桶>,其中有一句歌词是:每一个马桶都是英雄. EFCore也有一个英雄,在幕后默默地任劳任怨.它就叫 "支持字段" (Backing Fields ...

  2. LabVIEW操作者框架(Actor Framework)范例集锦之二:视频范例

    软件框架,特别是学习与掌握难度大.复杂性高,且尚处在不断演进变化的LabVIEW操作者框架(Actor Framework),离不开关键的各类范例的研读.模仿转换和工程实用. NI官方以及开发者社区, ...

  3. LabVIEW操作者框架(Actor Framework)范例集锦之四:官网论坛(上)

    2022年10月05日,国庆长假的第五天,假期余额已不多啦! 学习软件框架,特别是学习与掌握难度大.复杂性高,且尚处在不断演进变化的LabVIEW操作者框架(Actor Framework),离不开关 ...

  4. LabVIEW操作者框架(Actor Framework)范例集锦之六:VIPM

    2022年10月07日,今天是国庆长假的第七天,明天就要开始连续七工作日搬砖生活了,各位小伙伴们是否准备好了呢!是否又开始焦虑啦吗? 在学习操作者框架(Actor Framework)时,我也曾经迟迟 ...

  5. CAF(C++ actor framework)(序列化之结构体,任意嵌套STL)(一)

    User-Defined Data Types in Messages(用户自定义类型) All user-defined types must be explicitly "announc ...

  6. Shadow Properties之美(二)【Microsoft Entity Framework Core随笔】

    接着上一篇Shadow Properties之美(一),我们来继续举一个有点啰嗦的栗子. 先看简单需求:某HR系统,需要记录员工资料.需要记录的资料有: 员工号(规则:分公司所在城市拼音首字母,加上三 ...

  7. Shadow Properties之美(一)【Microsoft Entity Framework Core随笔】

    最近在做公司的项目的时候,开始把部分程序迁移到EF Core,然后有了一些感触,趁着还没忘却,还是先记录下来. EF Core还在成长中,我写这个的时候,版本是2.2.如果对着已有的EF 5/6来说, ...

  8. PHP技巧:PATH_SEPARATOR是什么(Zend Framework引导文件中的路径用法)

    PATH_SEPARATOR是一个常量,在Linux系统中是一个" : "号,Windows上是一个";"号.所以编写程序时最好用常量 PATH_SEPARAT ...

  9. (Entity Framework) EF框架简单示例用法

    EF框架是微软推出的用于与数据库交互的组件,这里简单列出一些常用用法,代码来源于<EF6-DBFirst-Demo>. 向数据库增加.修改.删除一条新记录的写法 using (var co ...

  10. Skynet基于Actor模式的开源框架

    使用多进程解决高并发带来的问题是进程安全锁,框架经常会因为部分代码的报错而导致死锁或内存占用不释放等诸多问题.而使用单进程的服务器框架,通过线程池来做消息轮询和任务执行,能够避开锁带来的诸多问题. 框 ...

最新文章

  1. hexo在git上搭建个人博客
  2. python3反爬虫原理与绕过实战 网盘_Python 3反爬虫原理与绕过实战
  3. 深度学习(三十七)——CenterNet, Anchor-Free, NN Quantization
  4. PyCharm常用快捷键和设置
  5. python学习机器学习_机器学习Python技巧,令人毛骨悚然的Linux命令,Thelio,Podman等
  6. 通道设置_关于上下学时间和通道设置的通知
  7. php无限分类下载,php无限分类
  8. C++ ---------------- 成员函数指针揭秘
  9. 一个简单的blog系统(十二) 增加友情链接页面
  10. ZipEntry的使用
  11. RN 启动开发服务器时报错 ReferenceError: SHA-1 for file
  12. 配置文件加密 HikariDataSource
  13. 自学python接单_Python接私活,兼职轻松月薪过万,会技术就可走遍天下
  14. 从千播大战到不足百家,倒闭潮之下直播创业何去何从?
  15. 【SVM支持向量机】实现和案例
  16. Problem I: 俊爷的局域网
  17. Linux根目录文件系统变为Read Only解决方案
  18. Python——库docx(六:分页符、分节符)1.4
  19. 设置数据有效性实现单元格下拉菜单的3种方法
  20. 第一次写博客,在正式记录之前,先来一个背景简介和分享

热门文章

  1. C# decimal保留指定的小数位数,不四舍五入
  2. es5 和 es6 class
  3. Perl获取前后任意月份月末
  4. 分享12306全自动验证码识别提交,春运抢票准备时
  5. IOS 学习笔记(2) 视图UINavigationController
  6. 实战Fibre Channel之六: 发起端和目的端常用命令
  7. 再论sklearn分类器
  8. springMvc 使用ajax上传文件,返回获取的文件数据 附Struts2文件上传
  9. 文件上传时判断是否为图片
  10. HDU 2196 Computer 树形DP