School of Computing

Multicore scheduling for lightweight communicating processes

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

Science of Computer Programming, 77(6):727-740, June 2012 [doi].


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.

Download publication 342 kbytes (PDF)

Bibtex Record

author = {Carl G. Ritson and Adam T. Sampson and Frederick R.M. Barnes},
title = {Multicore scheduling for lightweight communicating processes},
month = {June},
year = {2012},
pages = {727-740},
keywords = {Concurrency, Multicore, Process-oriented, Scheduling},
note = {},
doi = {10.1016/j.scico.2011.04.006},
url = {},
    publication_type = {article},
    submission_id = {12060_1336433330},
    ISSN = {0167-6423},
    journal = {Science of Computer Programming},
    volume = {77},
    number = {6},
    publisher = {Elsevier},

School of Computing, University of Kent, Canterbury, Kent, CT2 7NF

Enquiries: +44 (0)1227 824180 or contact us.

Last Updated: 21/03/2014