Functional programming for concurrent and distributed computing
The Computer Journal
Experience and evolution of concurrent Smalltalk
OOPSLA '87 Conference proceedings on Object-oriented programming systems, languages and applications
Actra-a multitasking/multiprocessing smalltalk
OOPSLA/ECOOP '88 Proceedings of the 1988 ACM SIGPLAN workshop on Object-based concurrent programming
Cilk: an efficient multithreaded runtime system
PPOPP '95 Proceedings of the fifth ACM SIGPLAN symposium on Principles and practice of parallel programming
Concurrent programming in ERLANG (2nd ed.)
Concurrent programming in ERLANG (2nd ed.)
Goal-oriented programming, or composition using events, or threads considered harmful
Proceedings of the 8th ACM SIGOPS European workshop on Support for composing distributed applications
Programming dynamically reconfigurable open systems with SALSA
ACM SIGPLAN Notices
Eliminating synchronization bottlenecks using adaptive replication
ACM Transactions on Programming Languages and Systems (TOPLAS)
The Join Calculus: A Language for Distributed Mobile Programming
Applied Semantics, International Summer School, APPSEM 2000, Caminha, Portugal, September 9-15, 2000, Advanced Lectures
StreamIt: A Language for Streaming Applications
CC '02 Proceedings of the 11th International Conference on Compiler Construction
The incremental garbage collection of processes
Proceedings of the 1977 symposium on Artificial intelligence and programming languages
On the duality of operating system structures
ACM SIGOPS Operating Systems Review
NESL: A Nested Data-Parallel Language (Version 2.6)
NESL: A Nested Data-Parallel Language (Version 2.6)
Capriccio: scalable threads for internet services
SOSP '03 Proceedings of the nineteenth ACM symposium on Operating systems principles
Modern concurrency abstractions for C#
ACM Transactions on Programming Languages and Systems (TOPLAS)
Software and the Concurrency Revolution
Queue - Multiprocessors
Exceptions and side-effects in atomic blocks
Science of Computer Programming - Special issue: Concurrency and synchronization in Java programs
Proceedings of the 33rd annual international symposium on Computer Architecture
Proceedings of the 21st annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications
Customizable Service State Durability for Service Oriented Architectures
EDCC '06 Proceedings of the Sixth European Dependable Computing Conference
Language support for fast and reliable message-based communication in singularity OS
Proceedings of the 1st ACM SIGOPS/EuroSys European Conference on Computer Systems 2006
Why events are a bad idea (for high-concurrency servers)
HOTOS'03 Proceedings of the 9th conference on Hot Topics in Operating Systems - Volume 9
Making events less slippery with eel
HOTOS'05 Proceedings of the 10th conference on Hot Topics in Operating Systems - Volume 10
Parallel Programmability and the Chapel Language
International Journal of High Performance Computing Applications
Google's MapReduce programming model — Revisited
Science of Computer Programming
Evaluating MapReduce for Multi-core and Multiprocessor Systems
HPCA '07 Proceedings of the 2007 IEEE 13th International Symposium on High Performance Computer Architecture
Kilim: Isolation-Typed Actors for Java
ECOOP '08 Proceedings of the 22nd European conference on Object-Oriented Programming
Programming with Live Distributed Objects
ECOOP '08 Proceedings of the 22nd European conference on Object-Oriented Programming
Quicksilver Scalable Multicast (QSM)
NCA '08 Proceedings of the 2008 Seventh IEEE International Symposium on Network Computing and Applications
Intel threading building blocks
Intel threading building blocks
Communications of the ACM - Security in the Browser
Live distributed objects
A universal modular ACTOR formalism for artificial intelligence
IJCAI'73 Proceedings of the 3rd international joint conference on Artificial intelligence
The design of a task parallel library
Proceedings of the 24th ACM SIGPLAN conference on Object oriented programming systems languages and applications
Actors with multi-headed message receive patterns
COORDINATION'08 Proceedings of the 10th international conference on Coordination models and languages
Event-Based programming without inversion of control
JMLC'06 Proceedings of the 7th joint conference on Modular Programming Languages
Kevlar: a flexible infrastructure for wide-area collaborative applications
Proceedings of the ACM/IFIP/USENIX 11th International Conference on Middleware
S: a scripting language for high-performance RESTful web services
Proceedings of the 17th ACM SIGPLAN symposium on Principles and Practice of Parallel Programming
Hi-index | 0.00 |
The paper introduces Self-Replicating Objects (SROs), a new concurrent programming abstraction. An SRO is implemented and used much like an ordinary .NET object and can expose arbitrary user-defined APIs, but it is aggressive about automatically exploiting multicore CPUs. It does so by spontaneously and transparently partitioning its state into a set of replicas that handle method calls in parallel and automatically merging replicas before processing calls that cannot execute in the replicated state. Developers need not be concerned about protecting access to shared data; each replica is a monitor and has its own state. The runtime ensures proper synchronization, scheduling, decides when to split/merge, and can transparently migrate replicas to other processes to decrease contention. Compared to threads/locks or toolkits such as .NET Parallel Extensions, SROs offer a simpler, more versatile programming model while delivering comparable, and in some cases even higher performance.