English

CPC: programming with a massive number of lightweight threads

Programming Languages 2011-02-07 v1

Abstract

Threads are a convenient and modular abstraction for writing concurrent programs, but often fairly expensive. The standard alternative to threads, event-loop programming, allows much lighter units of concurrency, but leads to code that is difficult to write and even harder to understand. Continuation Passing C (CPC) is a translator that converts a program written in threaded style into a program written with events and native system threads, at the programmer's choice. Together with two undergraduate students, we taught ourselves how to program in CPC by writing Hekate, a massively concurrent network server designed to efficiently handle tens of thousands of simultaneously connected peers. In this paper, we describe a number of programming idioms that we learnt while writing Hekate; while some of these idioms are specific to CPC, many should be applicable to other programming systems with sufficiently cheap threads.

Keywords

Cite

@article{arxiv.1102.0951,
  title  = {CPC: programming with a massive number of lightweight threads},
  author = {Gabriel Kerneis and Juliusz Chroboczek},
  journal= {arXiv preprint arXiv:1102.0951},
  year   = {2011}
}

Comments

To appear in PLACES'11

R2 v1 2026-06-21T17:21:49.534Z