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的东西来实现无锁的多线程并发,不过还处于实验阶段。

时间: 2024-08-03 14:46:48

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

通过对象属性表来增加系统的扩展性

在数据中设计时,通过对象属性表来增加系统的扩展性.如新闻系统中有新闻表t_news ,同时增加一个新闻 属性表t_news_prop, 这样新闻表的字段不能满足需求时,使用属性表就可以实现需求,只需要增加一条记 录到属性表中即可. 数据结构简单例子如下: t_news id  新闻IDtitle 新闻标题content 新闻内容addtime  时间 t_news_prop id  新闻IDpropName 属性名称propValue 属性值

优秀开源项目之三:高性能、高并发、高扩展性和可读性的网络服务器架构State Threads

译文在后面. State Threads for Internet Applications Introduction State Threads is an application library which provides a foundation for writing fast and highly scalable Internet Applications on UNIX-like platforms. It combines the simplicity of the multi

Class撑起了OOP世界的天。Class类是OO的基本单元,OO的世界都是通过一个一个的类协作完成的,提高软件的重用性、灵活性和扩展性(转)

引言 在OO的工作中,我们一定会涉及到类,抽象类和接口.那么类和抽象类以及接口到底扮演的什么角色? 本文主要是从人类社会的角度阐述类与抽象类以及接口的"社会"关系,从而让我们抛弃书上的那些死记硬背的概念,快速理解他们的区别与联系?   如果大家觉得还有必要把这块更新的更好,还请多多反馈. 如果觉的对您有用还请点击 "推荐"下,我会持续更新更多新的内容. 古老的传说 相传盘古开天劈地后,女娲一天在黄河边梳头时,突发奇想以泥土仿照自己抟土造人,创造并构建人类社会.后来又

<转载>客户案例:Docker 为 ADP 提供安全性和扩展性

背景 ADP 是基于云的人力资本管理 (HCM) 解决方案的最大全球性供应商.ADP 拥有超过 63 万家客户,惠及 100 多个国家或地区的 3500 多万用户.ADP 为其客户提供的解决方案不仅包括薪资服务,还全方位涵盖了 HCM 的完整范畴,在其中每个领域都有针对 SMB.中型市场和大型企业量身定制的版本. 挑战 ADP 面临三个重大挑战. 第一个是安全性.在 ADP,安全性是重中之重,因为他们处理的是很敏感的信息.美国政府将 ADP 视作"关键基础架构",因为它们存储着包括 5

VMware发布开源项目Lightwave和Photon 提高云应用扩展性

VMware是老牌的虚拟化技术提供商,但Docker等容器技术对其核心业务造成了不小的冲击,为了应付这种冲击,并顺应潮流,VMware发布了两个新的开源项目,Project Lightwave和Project Photon,这两个项目都是致力于提高云应用以及企业架构的扩展性. 最近从VMware发布的一系列开源项目的新闻来看,他们希望自身能在新型的企业级应用变革中占有重要的地位.花一些时间介绍一下当下应用程序与以前发生了那些本质的变化是值得的. 传统的企业级信息化建设都是使用整体(monolit

最强DIY扩展性 易迅人气游戏机箱导购

[天极网华南朱伟]机箱是一台主机的关键组建,对于系统的稳定至关重要.但要选购一款合适的机箱并不容易,尤其是对http://www.aliyun.com/zixun/aggregation/18699.html">游戏玩家来说,更是如此.相比以前的机箱,现在的机箱各项性能都有较大的提升,一般来讲都能满足大众用户需求.编辑就从易迅网推荐一些强大DIY扩展性的机箱,供大家选购. 先马 夜鹰2 USB3.0 中塔式机箱 主要特点:200mm超宽大五金结构 易迅报价:289元 购买链接:http:/

IBM POWER8处理器的新砝码:开放和扩展性

[天极网服务器频道5月13日消息]2014年4月28日,IBM正式发布POWER8处理器,新的处理器强调开放性和可扩展性.POWER8系统是首个OpenPOWER兼容系统,也是第一款充分利用目前所有OpenPOWER创新成果的产品.这让POWER8处理器从IBM的专有产品转变为POWER8生态圈的协同产品. IBM POWER8所面向的是当前最为热门的新兴负载,包括大数据.云计算.移动和社交等.IBM一直倡导.参与和支持Linux和开源软件,并将开源技术融入POWER平台.去年IBM针对 Pow

技巧篇:如何在云中构建大规模分布式系统

很多企业和开发者在开发一款产品时,首要考虑的是产品功能的实现,其后端架构通常都是非常简单直接的.产品在刚上线初期,由于用户访问压力很小,数据量积累也并不大,在短时间内都会运行良好. 然而如今移动互联网的普及和成熟,让一款产品很可能在短时间内聚集大量用户,面对流量激增.数据量翻番.访问量指数级攀升等诸多"烦恼",这本来是一件好事,可是如果后端系统不能及时扩展,势必会造成响应缓慢,频繁出错甚至拒绝服务的情况. 即便没有上述系统压力突然增大的"烦恼",产品在不断开发升级的

使用Lua脚本语言开发出高扩展性的系统,AgileEAS.NET SOA中间件Lua脚本引擎介绍

一.前言      AgileEAS.NET SOA 中间件平台是一款基于基于敏捷并行开发思想和Microsoft .Net构件(组件)开发技术而构建的一个快速开发应用平台.用于帮助中小型软件企业建立一条适合市场快速变化的开发团队,以达到节省开发成本.缩短开发时间,快速适应市场变化的目的.      AgileEAS.NET SOA中间件平台提供了敏捷快速开发软件工程的最佳实践,通过提供大量的基础支撑功能如IOC.ORM.SOA.分布式体系及敏捷并发开发方法所支撑的插件开发体系,以及提供了大量的