000151999 001__ 151999
000151999 005__ 20190316234858.0
000151999 0247_ $$2doi$$a10.5075/epfl-thesis-4874
000151999 02470 $$2urn$$aurn:nbn:ch:bel-epfl-thesis4874-0
000151999 02471 $$2nebis$$a6163653
000151999 037__ $$aTHESIS
000151999 041__ $$aeng
000151999 088__ $$a4874
000151999 245__ $$aIsolated Actors for Race-Free Concurrent Programming
000151999 269__ $$a2010
000151999 260__ $$aLausanne$$bEPFL$$c2010
000151999 300__ $$a173
000151999 336__ $$aTheses
000151999 520__ $$aMessage-based concurrency using actors has the potential to scale from multicore processors to distributed systems. However, several challenges remain until actor-based programming can be applied on a large scale. First, actor implementations must be efficient and highly scalable to meet the demands of large-scale distributed applications. Existing implementations for mainstream platforms achieve high performance and scalability only at the cost of flexibility and ease of use: the control inversion introduced by event-driven designs and the absence of fine-grained message filtering complicate the logic of application programs. Second, common requirements pertaining to performance and interoperability make programs prone to concurrency bugs: reusing code that relies on lower-level synchronization primitives may introduce livelocks; passing mutable messages by reference may lead to data races. This thesis describes the design and implementation of Scala Actors. Our system offers the efficiency and scalability required by large-scale production systems, in some cases exceeding the performance of state-of-the-art JVM-based actor implementations. At the same time, the programming model (a) avoids the control inversion of event-driven designs, and (b) supports a flexible message reception operation. Thereby, we provide experimental evidence that Erlang-style actors can be implemented on mainstream platforms with only a modest overhead compared to simpler actor abstractions based on inversion of control. A novel integration of event-based and thread-based models of concurrency enables a safe reuse of lock-based code from inside actors. Finally, we introduce a new type-based approach to actor isolation which avoids data races using unique object references. Simple, static capabilities are used to enforce a flexible notion of uniqueness and at-most-once consumption of unique references. Our main point of innovation is a novel way to support internal aliasing of unique references which leads to a surprisingly simple type system, for which we provide a complete soundness proof. Using an implementation as a plug-in for the EPFL Scala compiler, we show that the type system can be integrated into full-featured languages. Practical experience with collection classes and actor-based concurrent programs suggests that the system allows type checking real-world Scala code with only few changes.
000151999 6531_ $$aconcurrent programming
000151999 6531_ $$aactors
000151999 6531_ $$athreads
000151999 6531_ $$aevents
000151999 6531_ $$ajoin patterns
000151999 6531_ $$achords
000151999 6531_ $$aaliasing
000151999 6531_ $$alinear types
000151999 6531_ $$aunique pointers
000151999 6531_ $$acapabilities
000151999 700__ $$0240993$$aHaller, Philipp$$g172057
000151999 720_2 $$0241835$$aOdersky, Martin$$edir.$$g126003
000151999 8564_ $$s666858$$uhttps://infoscience.epfl.ch/record/151999/files/EPFL_TH4874.pdf$$yTexte intégral / Full text$$zTexte intégral / Full text
000151999 909C0 $$0252187$$pLAMP$$xU10409
000151999 909CO $$ooai:infoscience.tind.io:151999$$pthesis-bn2018$$pDOI$$pIC$$pthesis$$qDOI2$$qGLOBAL_SET
000151999 918__ $$aIC$$cIIF$$dEDIC2005-2015
000151999 919__ $$aLAMP1
000151999 920__ $$b2010
000151999 970__ $$a4874/THESES
000151999 973__ $$aEPFL$$sPUBLISHED
000151999 980__ $$aTHESIS