×

Scala参与者:统一基于线程和基于事件的编程。 (英语) 兹比尔1162.68396

摘要:消息传递并发性和虚拟机(如JVM)之间存在阻抗不匹配。虚拟机通常将其线程映射到重量级操作系统进程。如果没有轻量级的流程抽象,用户通常会被迫以事件驱动的方式编写并发应用程序的一部分,这会模糊控制流,并增加程序员的负担。
在本文中,我们展示了如何在单个参与者抽象下统一基于线程和基于事件的编程。使用Scala编程语言的高级抽象机制,我们在未修改的JVM上实现了我们的方法。我们的编程模型与底层VM的线程模型集成良好。

MSC公司:

68甲19 其他编程范式(面向对象、顺序、并发、自动等)

关键词:

并行编程演员螺纹事件
PDF格式BibTeX公司 XML格式引用
全文: 内政部 链接

参考文献:

[1] 阿迪亚,阿图尔;乔恩·豪厄尔;蒂默,马文;William J.Bolosky。;Douceur,John R.,《无需手动堆栈管理的协作任务管理》(Proc.USENIX(2002),USENIX),289-302
[2] Agha,Gul A.,《ACTORS:分布式系统中并发计算模型》(1986),麻省理工学院出版社:麻萨诸塞州剑桥
[3] 乔·阿姆斯特朗(Joe Armstrong),《爱尔兰语及其工业应用调查》(Erlang),收录于:Proc。INAP,1996年10月,第16-18页;乔·阿姆斯特朗(Joe Armstrong),《爱尔兰语及其工业应用调查》(Erlang),收录于:Proc。INAP,1996年10月,第16-18页
[4] 乔·阿姆斯特朗(Joe Armstrong);罗伯特·维丁;维克斯特罗姆,克莱斯;Mike Williams,《Erlang中的并发编程》(1996),Prentice-Hall·Zbl 0869.68026号
[5] 黑色,A。;卡尔森,M。;琼斯,M。;基布尔茨,R。;Nordlander,J.,《Timber:实时嵌入式系统的编程语言》(2002)
[6] Blumofe,R.,Cilk:高效的多线程运行时系统,《并行与分布式计算杂志》,37,1,55-69(1996)
[7] Jean-Pierre Briot,Actalk:在Smalltalk-80环境中分类和设计演员语言的测试平台,见:Proc。ECOOP,1989年,第109-129页;Jean-Pierre Briot,Actalk:在Smalltalk-80环境中分类和设计演员语言的测试平台,见:Proc。ECOOP,1989年,第109-129页
[8] Caromel,D。;德尔贝,C。;迪科斯坦佐,A。;Leyton,M.,《主动式:在网格和P2P系统上编程和运行应用程序的集成平台》,《科学与技术中的计算方法》,12,1,69-77(2006)
[9] 丹尼斯·卡罗梅尔(Denis Caromel);Henrio,Ludovic;Serpette,Bernard Paul,《异步和确定性对象》(Proc.POPL(2004),ACM),123-134·Zbl 1325.68052号
[10] Brian Chin;Todd D.Millstein,《应答者:交互式应用程序的语言支持》(Proc.ECOOP.Proc.ECAOP,LNCS,第4067卷(2006年7月),Springer),255-278
[11] Claessen,Koen,穷人的并发monad,函数编程杂志,9,313-323(1999)·Zbl 0948.68022号
[12] Eric Cooper,Gregory Morrisett,《将线程添加到标准ML》,报告CMU-CS-90-186,卡内基梅隆大学,1990年12月;Eric Cooper、Gregory Morrisett,《向标准ML添加线程》,报告CMU-CS-90-186,卡内基梅隆大学,1990年12月
[13] 瑞安·坎宁安;Eddie Kohler,《用鳗鱼让比赛变得不那么滑》(Proc.HotOS(2005年6月),USENIX)
[14] Tom Van Cutsem;杰西·德德克;莫斯科,斯迪恩;Elisa Gonzalez Boix;提奥·D’Hondt;De Meuter,Wolfgang,环境参考:移动网络中的寻址对象,(OOPSLA Companion(2006),ACM),986-997
[15] Tom Van Cutsem;莫斯科,斯迪恩;De Meuter,Wolfgang,《演员和线程之间的语言共生》(Proc.ICDL(2007),ACM),222-248
[16] 杰西·德德克;Tom Van Cutsem;莫斯科,斯迪恩;提奥·D’Hondt;De Meuter,Wolfgang,《AmbientTalk中面向环境的编程》(Proc.ECOOP.Proc.ECOP,LNCS,第4067卷(2006)),230-254
[17] 理查德·德雷夫斯(Richard P.Draves)。;Brian N.Bershad。;理查德·拉希德(Richard F.Rashid)。;Dean,Randall W.,《使用延续实现操作系统中的线程管理和通信》,《操作系统评论》,25,5,122-136(1991)
[18] Adam Dunkels,Björn Grönvall,Thiemo Voigt,Contiki-用于微型网络传感器的轻量级灵活操作系统,在:Proc。LCN,2004年,第455-462页;Adam Dunkels、Björn Grönvall、Thiemo Voigt、Contiki——一种轻量级、灵活的微型网络传感器操作系统,见:Proc。LCN,2004年,第455-462页
[19] 埃米尔,伯拉克;马丁·奥德斯基(Martin Odersky);John Williams,将对象与模式匹配,(Ernst,Erik,Proc.ECOOP.Proc.ECAOP,LNCS,第4609卷(2007),Springer),273-298
[20] 菲尔德,约翰;Varela,Carlos A.,《Transactors:在不可靠环境中维护全球一致分布式状态的编程模型》(Proc.POPL(2005),ACM),195-208·Zbl 1369.68134号
[21] 伽玛,E。;赫尔姆·R。;约翰逊,R。;Vlissides,J.,《设计模式》(1995),Addison-Wesley
[22] Benoit Garbinato,Rachid Guerraoui,Jarle Hulaas,Maxime Monod,Jesper Spring,Frugal mobile objects,技术报告,EPFL,2005;Benoit Garbinato,Rachid Guerraoui,Jarle Hulaas,Maxime Monod,Jesper Spring,节俭的移动物体,技术报告,EPFL,2005
[23] Guillaume Germain,Marc Feeley,Stefan Monnier,《白蚁计划中的面向并发编程》,收录于:Proc。方案和功能规划讲习班,2006年9月;Guillaume Germain,Marc Feeley,Stefan Monnier,《白蚁计划中的面向并发编程》,收录于:Proc。方案和函数编程研讨会,2006年9月
[24] 菲利普·哈勒;Odersky,Martin,《无控制反转的基于事件的编程》(Proc.JMLC.Proc.JMLC,LNCS,第4228卷(2006年9月),Springer),4-22·兹比尔1162.68396
[25] Tim Harris,Keir Fraser,轻量级事务的语言支持,in:Proc。OOPSLA,2003年,第388-402页;Tim Harris,Keir Fraser,轻量级事务的语言支持,in:Proc。OOPSLA,2003年,第388-402页
[26] 蒂姆·哈里斯;西蒙·马洛;西蒙·琼斯(Simon L.Peyton Jones)。;Maurice Herlihy,《可组合内存事务》(Proc.PPOPP(2005年6月),ACM),48-60
[27] 克里斯托弗·海恩斯(Christopher T.Haynes)。;Daniel P.Friedman,《引擎构建过程抽象》(Symp.Lisp and Functional Programming,1984年8月),ACM,18-24
[28] 卡尔·休伊特(Carl Hewitt)、彼得·毕晓普(Peter Bishop)、理查德·斯泰格(Richard Steiger),《人工智能的通用模块化ACTOR形式主义》,载于:IJCAI,1973年,第235-245页;Carl Hewitt、Peter Bishop、Richard Steiger,人工智能的通用模块化ACTOR形式主义,收录于:IJCAI,1973年,第235-245页
[29] 休·劳尔(Hugh C.Lauer)。;罗杰·尼达姆(Roger M.Needham),《论操作系统结构的二重性》,《操作系统评论》(operating Systems Review),第13、2、3-19页(1979年)
[30] Lea,Doug,Java并发编程(1996),Addison-Wesley·Zbl 0888.68024号
[31] Lea,Doug,《java fork/join框架》(java Grande(2000)),第36-43页
[32] 爱德华·A·李,线程问题。技术报告UCB/EECS-2006-1,加州大学伯克利分校,2006年1月;爱德华·A·李,线程问题。技术报告UCB/EECS-2006-1,加州大学伯克利分校,2006年1月
[33] 李鹏;Zdancewic,Steve,《结合事件和线程实现可伸缩网络服务并评估一元应用级并发原语》(Proc.PLDI(2007),ACM),189-199
[34] Lindholm,T。;Yellin,F.,《Java虚拟机规范》(1996),Addison-Wesley
[35] 马克·米勒(Mark S.Miller)。;Dean Tribble,E。;Shapiro,Jonathan,《陌生人之间的并发性——E中的编程作为计划协调》(Proc.TGC 2005)。程序。TGC 2005,LNCS,第3705卷(2005),Springer-Verlag),195-229
[36] Nyström,J.H。;菲利普·特林德(Philip W.Trinder)。;King,David J.,《评估电信软件的分布式函数语言》(Erlang研讨会Proc.Workshop(2003年8月),ACM),1-7
[37] 约翰·奥斯特霍特(John Ousterhout),《为什么线程是一个坏主意》(Why threads are A bad idea)(大多数情况下),《USENIX邀请演讲》,1996年1月;约翰·奥斯特霍特(John Ousterhout),《为什么线程是一个坏主意》(Why threads are A bad idea)(大多数情况下),《USENIX邀请演讲》,1996年1月
[38] Vivek S.Pai,Peter Druschel,Willy Zwaenepoel,Flash:一个高效且可移植的Web服务器,in:Proc。USENIX,1999年6月,第199-212页;Vivek S.Pai、Peter Druschel、Willy Zwaenepoel,《Flash:一个高效且可移植的Web服务器》,摘自:Proc。USENIX,1999年6月,第199-212页
[39] 托马斯·D·A。;拉隆德,W.R。;杜伊莫维奇,J。;Wilson,M。;McAffer,J。;Berry,B.,Actra:A multitasking/multiprocessing smalltalk,ACM SIGPLAN Notices,24,4,87-90(1989)
[40] 卡洛斯·瓦雷拉;Agha,Gul,用SALSA动态重新配置开放系统编程,ACM SIGPLAN通知,36,12,20-34(2001)
[41] 罗伯特·冯·贝伦,J。;杰里米·康迪特;Eric A.Brewer,《为什么事件是个坏主意(对于高并发服务器)》(Proc.Hot OS(2003年5月),USENIX),19-24
[42] J.Robert von Behren、Jeremy Condit、Feng Zhou、George C.Necula、Eric A.Brewer、Capriccio:互联网服务的可扩展线程,见:Proc。SOSP,2003年,第268-281页;J.Robert von Behren、Jeremy Condit、Feng Zhou、George C.Necula、Eric A.Brewer、Capriccio:互联网服务的可扩展线程,见:Proc。SOSP,2003年,第268-281页
[43] Mitchell Wand,基于连续性的多处理,收录于:LISP会议,1980年,第19-28页;Mitchell Wand,基于连续性的多处理,摘自:LISP会议,1980年,第19-28页
[44] Matt Welsh、David E.Culler、Eric A.Brewer,SEDA:一个条件良好、可扩展的互联网服务架构,见:Proc。SOSP,2001年,第230-243页;Matt Welsh、David E.Culler、Eric A.Brewer,SEDA:一个条件良好、可扩展的互联网服务架构,见:Proc。SOSP,2001年,第230-243页
[45] Akinori Yonezawa,Jean-Pierre Briot,Etsuya Shibayama,ABCL/1中面向对象的并发编程,in:Proc。OOPSLA,1986年,第258-268页;Akinori Yonezawa,Jean-Pierre Briot,Etsuya Shibayama,ABCL/1中面向对象的并发编程,in:Proc。OOPSLA,1986年,第258-268页
[46] 卢卡斯·齐亚雷克;菲利普·沙茨(Philip Schatz);Jagannathan,Suresh,Stabilizer:并发功能程序的模块化检查点抽象,(Proc.IFP(2006),ACM),136-147
此参考列表基于出版商或数字数学图书馆提供的信息。其项与zbMATH标识符进行启发式匹配,可能包含数据转换错误。在某些情况下,zbMATH Open的数据对这些数据进行了补充/增强。这试图尽可能准确地反映原始论文中列出的参考文献,而不要求完整或完全匹配。