actor-based programming与构建大规模扩展性的并行系统

简介:

1.actor-based  programming

 actor based 类似于object based ,但是它比object 多了自己的message queue 和message processor、message handler

也就是说一个actor是一个独立的处理单元,但是他不是真正的物理上的thread

可以看成是轻量级的thread。

一个actor可以给另一个actor push msg

这样系统中就可以存在大量的独立活动单元,是并行系统的基本组件。

2.Intel TBB(Threading Build Block)

这是intel的一个开源的高性能线程库,它可以很大效率的支持多个任务的并行(这是隐藏实际的物理的thread的),我们可以把上面的actor分配给TBB去调度管理,来实现高性能的并行系统。

这个库还提供了各种thread-safe的container,而我们知道标准c++的stl的container都是线程不安全的。

 

感想

这种actor-based方法让我想到了QT中的Qwidget,他们可以互相通信,有各自的message queue,但是不同的是Qwidget是单线程的,没有一个多线程库去对他们之间做并发。

 

使用actor-based方法构建并行系统,比我们单纯使用多线程来实现的好处是:

1.纯多线程的系统受线程数量的影响,当系统复杂度提高时,线程数目要升高,会降低性能甚至不能扩展系统。

2.纯多线程的系统一般要使用lock critical area等来对线程进行互斥,当系统复杂度提升时,各种dead lock等问题也会出来,降低性能。而actor-based是share nothing的,一个actor里面的数据是相互独立的,不必使用线程间的互斥和等待。

但是个人认为这种情况是理想的,有时还是要用锁的,关于这个,现在有一种transactional memory的东西来实现无锁的多线程并发,不过还处于实验阶段。

目录
相关文章
|
2月前
|
存储 安全 Go
Go 语言以其高效的并发编程能力著称,主要依赖于 goroutines 和 channels 两大核心机制
Go 语言以其高效的并发编程能力著称,主要依赖于 goroutines 和 channels 两大核心机制。本文介绍了这两者的概念、用法及如何结合使用,实现任务的高效并发执行与数据的安全传递,强调了并发编程中的注意事项,旨在帮助开发者更好地掌握 Go 语言的并发编程技巧。
36 2
|
5月前
|
存储 异构计算
自研分布式训练框架EPL问题之通过strategy annotation实现流水并行如何解决
自研分布式训练框架EPL问题之通过strategy annotation实现流水并行如何解决
|
5月前
|
并行计算 算法 调度
自研分布式训练框架EPL问题之提高GPU利用率如何解决
自研分布式训练框架EPL问题之提高GPU利用率如何解决
|
6月前
|
数据采集
LabVIEW Actor架构特点与适用范围
LabVIEW Actor架构特点与适用范围
56 1
|
存储 缓存 分布式计算
Structured_体系结构_无限扩展的表 | 学习笔记
快速学习 Structured_体系结构_无限扩展的表
Structured_体系结构_无限扩展的表 | 学习笔记
|
机器学习/深度学习 中间件 语音技术
GPU训练的快速大规模分布式扩展-GPU多机多卡Machine Learning Middleware
我们设计了GPU多机多卡middleware,使得单机版机器学习程序可以通过插入middleware较快的实现基于ASGD或MA的多机多卡训练,此前各自基于open source工具所做的独有修改都可以得以充分保留。
16163 0
|
网络协议 C++ 容器
大型分布式C++框架《二:大包处理过程》
本来这一篇是打算写包头在分布式平台中的具体变换过程的。其实文章已经写好了。但是想了这个应该是不能随便发表的。毕竟如果知道了一个包的具体每个字节的意义。能伪造包来攻击系统。其次来介绍一个包的具体变换过程意义不大。
937 0
|
存储 缓存 数据库
可靠的、可扩展的、可维护的数据系统 ------《Designing Data-Intensive Applications》读书笔记1
坦白说也是机缘巧合,在硕士生阶段进入分布式系统领域学习。无论是大规模存储或计算,其核心也是运用分布式技术利用并行性来解决数据密集型应用的需求。最近开始在啃这本《Designing Data-Intensive Applications》大部头,作者Martin Kleppmann在分布式数据系统领域有着很深的功底,并在这本书中完整的梳理各类纷繁复杂设计背后的技术逻辑,不同架构之间的妥协与超越,很值得开发人员与架构设计者阅读。
1438 0