Multicore scheduling for lightweight communicating processes

Carl G. Ritson, Adam T. Sampson, Frederick R. M. Barnes

Research output: Contribution to journalArticlepeer-review

4 Citations (Scopus)


Process-oriented programming is a design methodology in which software applications are constructed from communicating concurrent processes. A typical process-oriented design involves the composition of a large number of small isolated component processes. These concurrent components allow for the scalable parallel execution of the resulting application on both shared-memory and distributed-memory architectures. In this paper we present a runtime designed to support process-oriented programming by providing lightweight processes and communication primitives. The runtime’s scheduler, implemented using lock-free algorithms, automatically executes concurrent components in parallel on multicore systems. Heuristics dynamically group processes into cache-affine work units based on communication patterns. Work units are then distributed via wait-free work-stealing. Initial performance analysis shows that, using the algorithms presented in this paper, process-oriented software can execute with an efficiency approaching that of optimised sequential and coarse-grain threaded designs.
Original languageEnglish
Pages (from-to)727-740
Number of pages14
JournalScience of Computer Programming
Issue number6
Publication statusPublished - Jun 2012
Externally publishedYes


  • Concurrency
  • Multicore
  • Process-oriented
  • Scheduling


Dive into the research topics of 'Multicore scheduling for lightweight communicating processes'. Together they form a unique fingerprint.

Cite this