  |
It's (Not) All Been Done - http://www.gotw.ca/publications/guest-ed-200609.htm
Every decade or so there is a major revolution in the way software is developed. But, unlike the object and web revolutions, the concurrency revolution can be seen coming. |
  |
ZThreads - http://zthread.sourceforge.net/
An advanced object-oriented, cross-platform C++ threading and synchronization library. [GPL] |
  |
State Threads Library - http://state-threads.sourceforge.net/
Small application library for writing fast, highly scalable Internet programs on Unix-like platforms. Open source, MPL or GPL. |
  |
Generic Synchronization Policies in C++ - http://www.ciaranmchale.com/gsp/
Most uses of synchronization code in multi-threaded applications fall into a small number of high-level “usage patterns”, or what can be called generic synchronization policies (GSPs). This paper illustrates how the use of such GSPs simplify the writing of thread-safe classes. In addition, this paper presents a C++ class library that implements commonly-used GSPs. |
  |
Survey of Threads - http://www.northco.net/chenke/project/project2.html
Comparing Solaris, Linux, and Windows NT threads. |
  |
Fundamentals of Multithreading - http://www.slcentral.com/articles/01/6/multithreading/
Technical article, covering Amdahl's Law, latencies and bandwidth, on-chip multiprocessing, Jackson technology, and simultaneous multithreading. (SystemLogic.net) |
  |
Thread Implementation Table - http://members.aol.com/drbutenhof/ThreadTable.html
Dave Butenhof's comparison of thread implementations. |
  |
Concurrent Programming: Principles and Practice - http://www.aw-bc.com/catalog/academic/product/0,1144,0805300864,00.html
This book provides an in-depth overview of underlying principles as well as practical techniques that can be used to design concurrent programs. (Greg Andrews) |
  |
A Thread Performance Comparison - http://www.usenix.org/publications/library/proceedings/usenix-nt98/full_papers/zabatta/zabatta_html/zabatta.html
Compares Windows NT and Solaris on a symmetric multiprocessor machine. |
  |
comp.programming.threads FAQ - http://www.lambdacs.com/cpt/FAQ.html
Bil Lewis's collection of frequently asked questions. |
  |
Priority Inheritance Protocols - http://www-md.e-technik.uni-rostock.de/ma/gol/rtsys-bib/90-toc-pcp.pdf
Use of synchronization mechanisms like semaphores, monitors, and critical regions can lead to uncontrolled priority inversion. |
  |
Portable Thread Synchronization using C++ - http://www.frostbytes.com/~jimf/papers/c++sync/c++sync.html
Provides example C++ classes implementing a series of synchronization objects useful for building portable (Solaris and Win32) multithreaded applications. |
  |
Introduction to Priority Inversion - http://www.embedded.com/story/OEG20020321S0023
Gives an introduction to priority inversion and shows a pair of techniques to avoid them. |
  |
Await && Locks - http://await.sourceforge.net/
An expressive C++ thread synchronization library. |
  |
Foundations of Multithreaded, Parallel, and Distributed Programming - http://www.aw-bc.com/catalog/academic/product/0,1144,0201357526,00.html
This book teaches the fundamental concepts of multithreaded, parallel and distributed computing. Emphasizes how to solve problems, with correctness the primary concern and performance an important, but secondary, concern. (Gregory R. Andrews) |
 |
Sutter Speaks: A Conversation with the Concurrency Whisperer - http://www.devx.com/go-parallel/Article/37573
Multi- and many-core chips are entering the mainstream — and one of the first software development authorities to take note was C++ expert Herb Sutter. Thanks to his practical insights, a new generation may grok concurrency sooner than previously thought possible. |
 |
Software and the Concurrency Revolution - http://acmqueue.com/modules.php?name=Content&pa=showpage&pid=332
Focuses on the implications of concurrency for software and its consequences for both programming languages and programmers. (Herb Sutter and James Larus) |
 |
The Problem with Threads - http://www.computer.org/portal/site/computer/menuitem.5d61c1d591162e4b0ef1bd108bcd45f3/index.jsp?&pName=computer_level1_article&TheCat=1005&path=computer/homepage/0506&file=cover.xml&xsl=article.xsl&
Argues that for concurrent programming to become mainstream, threads must be discarded as a programming model. Nondeterminism should be judiciously and carefully introduced where needed, and it should be explicit in programs. |
 |
Concurrency with Erlang - http://dsonline.computer.org/portal/site/dsonline/menuitem.9ed3d9924aeb0dcd82ccc6716bbe36ec/index.jsp?&pName=dso_level1&path=dsonline/2007/10&file=w5tow.xml&xsl=article.xsl&
To avoid problems with shared state working with multiple threads, Vinoski recommends a programming language like Erlang rather than C++ or Java. |
 |
Apply Critical Sections Consistently - http://www.ddj.com/cpp/202401098
Critical sections are the One True Tool for guaranteeing mutual exclusion on shared variables. Like most tools, these must be applied consistently, and with the intended meanings. |