Threads cannot be implemented as a library
Author(s) -
HansJ. Boehm
Publication year - 2005
Publication title -
proceedings of the acm sigplan conference on programming language design and implementation
Language(s) - English
Resource type - Conference proceedings
ISSN - 1531-7102
ISBN - 1-59593-056-6
DOI - 10.1145/1065010.1065042
Subject(s) - posix threads , computer science , thread (computing) , compiler , correctness , programming language , threading (protein sequence) , multithreading , context (archaeology) , paleontology , physics , nuclear magnetic resonance , protein structure , biology
In many environments, multi-threaded code is written in a language that was originally designed without thread support (e.g. C), to which a library of threading primitives was subsequently added. There appears to be a general understanding that this is not the right approach. We provide specific arguments that a pure library approach, in which the compiler is designed independently of threading issues, cannot guarantee correctness of the resulting code.We first review why the approach almost works, and then examine some of the surprising behavior it may entail. We further illustrate that there are very simple cases in which a pure library-based approach seems incapable of expressing an efficient parallel algorithm.Our discussion takes place in the context of C with Pthreads, since it is commonly used, reasonably well specified, and does not attempt to ensure type-safety, which would entail even stronger constraints. The issues we raise are not specific to that context.
Accelerating Research
Robert Robinson Avenue,
Oxford Science Park, Oxford
OX4 4GP, United Kingdom
Address
John Eccles HouseRobert Robinson Avenue,
Oxford Science Park, Oxford
OX4 4GP, United Kingdom