actor model vs tasked based parallizm
2015-08-22 12:26
465 查看
举例子:计算pi
actor model
概念:一般有n个actor(task),和一个调度线程(本身也是一个actor)
调度线程负责向每个task发送命令执行计算,以及接收每个task的结果并归并到一起
接口一般定义为:
addTask( new Task{ onReceive(msg,from)..., send(to,xxx)} )
tasked based parallizm
概念:可以定义task和io,io用来计算task的依赖关系。系统自动根据依赖关系执行所有task
使用流程:
创建子task,子task无依赖
创建汇总task,依赖所有的子task
最后启动所有task,等待完成即可
接口一般定义为:
addTask(new task(in, out, callbackfun))
如何用actor model实现tasked based parallizm?
MyTask
{
MyTask(in,out) //记录下io即可
onReceive(msg)
{
if msg.id in my dependencies
mark this dependency is done
if all dependencies are done
do the callbackfun
send msg to all out tasks
}
}
boost:;future实现任务并行化
for i in N
future_i =start subtask
ins.append(future_i)
start merge task(ins as input)
wait all task done
Actor model
c++ CAF http://actor-framework.org/pdf/cshw-nassp-13.pdf https://github.com/actor-framework/actor-framework
QP/C++
Akka
https://github.com/Neverlord/libcppa http://www.theron-library.com/
actor model
概念:一般有n个actor(task),和一个调度线程(本身也是一个actor)
调度线程负责向每个task发送命令执行计算,以及接收每个task的结果并归并到一起
接口一般定义为:
addTask( new Task{ onReceive(msg,from)..., send(to,xxx)} )
tasked based parallizm
概念:可以定义task和io,io用来计算task的依赖关系。系统自动根据依赖关系执行所有task
使用流程:
创建子task,子task无依赖
创建汇总task,依赖所有的子task
最后启动所有task,等待完成即可
接口一般定义为:
addTask(new task(in, out, callbackfun))
如何用actor model实现tasked based parallizm?
MyTask
{
MyTask(in,out) //记录下io即可
onReceive(msg)
{
if msg.id in my dependencies
mark this dependency is done
if all dependencies are done
do the callbackfun
send msg to all out tasks
}
}
boost:;future实现任务并行化
for i in N
future_i =start subtask
ins.append(future_i)
start merge task(ins as input)
wait all task done
Actor model
c++ CAF http://actor-framework.org/pdf/cshw-nassp-13.pdf https://github.com/actor-framework/actor-framework
QP/C++
Akka
https://github.com/Neverlord/libcppa http://www.theron-library.com/
相关文章推荐
- Android动态注册广播,监听网络状态变化,判断网络模式
- Android 开发:开源库Speex支持arm64的动态库文件
- [LeetCode#90]Subsets II
- SD3.0四个协议解读
- Android基础入门教程——4.4.1 ContentProvider初探
- 第91讲:Akka第一个案例动手实战架构设计学习笔记
- POJ 3268 Silver Cow Party(最短路 dijkstra求任意两点最短路)
- LightOJ1104---Birthday Paradox (概率)
- 如何使用UDP进行跨网段广播(转)
- 多台web服务器之间共享session
- [8-20]时间管理命令Date、Hwclock、Cal小结
- STM32的NVIC_PriorityGroupConfig使用及优先级分组方式理解
- 第3期Spark纯实战公益大讲坛:通过案例实战掌握Spark内核运行内幕
- 去掉rhel的注册提示
- HBASE bulkload 加载TSV数据
- http://stormzhang.com/devtools/2014/12/09/android-studio-tutorial3/ 安卓studio 安装教程
- 微信支付公众平台配置
- 栈的应用2——超级计算器(中缀与后缀表达式)C语言
- AsyncTask小案例
- POJ2667 Hotel(线段树区间合并)