# Boost.Threads Bibliography

###

# 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 world-wide 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 multi-threaded 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 multi-threading 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 Nov 2001

© Copyright Beman Dawes, 2001