|[Andrews 83]|| Gregory R. Andrews, Fred B. Schneider, Concepts and
Notations for Concurrent Programming, ACM Computing Surveys, Vol.
15, No. 1, March, 1983.
Good general background reading. Includes descriptions of Path Expressions, Message Passing, and Remote Procedure Call in addition to the basics. Section 3.3 explains why semaphores are considered error prone.
|[Boost]|| The Boost worldwide web site. http://www.boost.org
Boost.Threads is one of many Boost libraries. The Boost web site includes a great deal of documentation and general information which applies to all Boost libraries. Current copies of the libraries including documentation and test programs may be downloaded from the web site.
|[Brinch Hansen 73]|| Per Brinch Hansen, Concurrent Programming Concepts,
ACM Computing Surveys, Vol. 5, No. 4, December, 1973.
"This paper describes the evolution of language features for multiprogramming from event queues and semaphores to critical regions and monitors." Includes analysis of why events are considered error-prone. Also noteworthy because of an introductory quotation from Christopher Alexander; Brinch Hansen was years ahead of others in recognizing that pattern concepts applied to software too.
|[Brinch Hansen 02]||
Per Brinch Hansen, Ed., The Origin of Concurrent Programming,
from Semaphores to Remote Procedure Calls, Springer-Verlag, 2002. ISBN
Nineteen of the original seminal papers by Dijkstra, Brinch Hansen, and Hoare, plus a current (2001) Overview by Brinch Hansen. Although expensive, it is hard to imagine anyone who is interested in understanding the underpinnings of any form of concurrent programming who would not want to own this book. May not be of interest for those who just want to use Boost.Threads and don't care about the design issues hidden behind the curtain.
David R. Butenhof, Programming with POSIX Threads, Addison-Wesley 1997, ISBN 0-201-63392-2 http://cseng.aw.com/book/0,3828,0201633922,00.html
This is a very readable explanation of threads and how to use them. Many of the insights given apply to all multithreaded programming, not just POSIX Threads.
C.A.R Hoare, Monitors: An Operating System Structuring Concept, Communications of the ACM, Vol. 17, No. 10. October 1974, pp. 549-557 http://www.acm.org/classics/feb96/
Hoare and Brinch Hansen's work on Monitors is the basis for reliable multithreading patterns. This is one of the most often referenced papers in all of computer science, and with good reason. It is included in [Brinch Hansen 02]
ISO/IEC 14882:1998(E) Programming Language C++ http://www.ansi.org
This is the official C++ Standards document. Available from the ANSI (American National Standards Institute) Electronic Standards Store.
|[McDowell 89]|| Charles E McDowell, David P. Helmbold, Debugging Concurrent
Programs, ACM Computing Surveys, Vol. 21, No. 2, December, 1989.
Identifies many of the unique failure modes and debugging difficulties associated with concurrent programs.
Douglas C. Schmidt and Irfan Pyarali, Strategies for Implementing POSIX Condition Variables on Win32, Department of Computer Science, Washington University, St. Louis, Missouri. http://www.cs.wustl.edu/~schmidt/win32-cv-1.html
Rationale for understanding Boost.Threads condition variables. Note that Alexander Terekhov found some bugs in the implementation given in this article, so pthreads-win32 and Boost.Threads are even more complicated yet.
Douglas C. Schmidt, Michael Stal, Hans Rohnert and Frank Buschmann, Pattern-Oriented Software Architecture Volume 2 - Patterns for Concurrent and Networked Objects, Wiley 2000, ISBN 0-471-60695-2 http://www.wiley.com/Corporate/Website/Objects/Products/0,9049,104671,00.html
This is a very good explanation of how to apply several patterns useful for concurrent programming. Among the patterns documented is the Monitor Pattern mentioned frequently in the Boost.Threads documentation.
|[Stroustrup 00]|| Bjarne Stroustrup, The C++ Programming Language,
Special Edition, Addison-Wesley 2000, ISBN 0-201-70073-5 http://cseng.aw.com/book/0,3828,0201700735,00.html
The first book a C++ programmer should own. Note that the 3rd edition (and subsequent editions like the Special Edition) has been rewritten to cover the ISO standard language and library.
Note: The URL's above are provided in plain text form so that they will be visible on printed copies of this document.
Revised 19 July, 2003
© Copyright William E. Kempf and Beman Dawes 2001-2003. All Rights Reserved.
Permission to use, copy, modify, distribute and sell this software and its documentation for any purpose is hereby granted without fee, provided that the above copyright notice appear in all copies and that both that copyright notice and this permission notice appear in supporting documentation. William E. Kempf makes no representations about the suitability of this software for any purpose. It is provided "as is" without express or implied warranty.