Library abstraction for C/C++ concurrency

Mark Batty, Mike Dodds, Alexey Gotsman

Research output: Chapter in Book/Report/Conference proceedingConference contribution

Abstract

When constructing complex concurrent systems, abstraction is vital:
programmers should be able to reason about concurrent libraries in terms of
abstract specifications that hide the implementation details. Relaxed memory
models present substantial challenges in this respect, as libraries need not
provide sequentially consistent abstractions: to avoid unnecessary
synchronisation, they may allow clients to observe relaxed memory effects, and
library specifications must capture these.

In this paper, we propose a criterion for sound library abstraction in the new
C11 and C++11 memory model, generalising the standard sequentially
consistent notion of linearizability. We prove that our criterion soundly
captures all client-library interactions, both through call and return values,
and through the subtle synchronisation effects arising from the memory
model. To illustrate our approach, we verify implementations against
specifications for the lock-free Treiber stack and a producer-consumer
queue. Ours is the first approach to compositional reasoning for concurrent
C11/C++11 programs.
Original languageEnglish
Title of host publicationPOPL '13
Subtitle of host publicationProceedings of the 40th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Place of PublicationNew York
PublisherACM
Pages235-248
Number of pages14
ISBN (Electronic)9781450318327
DOIs
Publication statusPublished - 2013
Event40th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages (POPL '13) - Rome, Italy
Duration: 23 Jan 201325 Jan 2013

Conference

Conference40th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages (POPL '13)
Country/TerritoryItaly
CityRome
Period23/01/1325/01/13

Cite this