###  | # Boost.Threads ## Bibliography

[Andrews 83] | Gregory R. Andrews, Fred B. Schneider, Concepts and Notations for Concurrent Programming, ACM Computing Surveys, Vol. 15, No. 1, March, 1983. http://www.acm.org/pubs/citations/journals/surveys/1983-15-1/p3-andrews/ Good general background reading. Includes descriptions of Path Expressions, Message Passing, and Remote Procedure Call in addition to the basics.
[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. http://www.acm.org/pubs/articles/journals/surveys/1973-5-4/p223-hansen/ "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 pattern concepts applied to software too.
]Butenhof 97] | 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.
[Hoare 74] | 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.
[ISO 98] | 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. http://www.acm.org/pubs/citations/journals/surveys/1989-21-4/p593-mcdowell/ Identifies many of the unique failure modes and debugging difficulties associated with concurrent programs.
[Schmidt] | 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.
[Schmidt 00] | 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 05 November, 2001

© Copyright William E. Kempf and Beman Dawes 2001-2002. 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.