  |
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. |
  |
ZThreads - http://zthread.sourceforge.net/
An advanced object-oriented, cross-platform C++ threading and synchronization library. [GPL] |
  |
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) |
  |
comp.programming.threads FAQ - http://www.lambdacs.com/cpt/FAQ.html
Bil Lewis's collection of frequently asked questions. |
  |
Await && Locks - http://await.sourceforge.net/
An expressive C++ thread synchronization library. |
  |
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. |
  |
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. |
  |
The Many Faces of Deadlock - http://www.ddj.com/cpp/209900973
Explains that deadlock can happen whenever there is a blocking (or waiting) cycle among concurrent tasks. |
  |
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. |
  |
Sutter Speaks: The Future of Concurrency - http://www.devx.com/go-parallel/Article/37839
What does the future hold for concurrency? What will happen to the tools and techniques around concurrent programming? In part two of our series, concurrency guru Herb Sutter talks about these issues and what developers need to be reading to understand concurrency. |
  |
Maximize Locality, Minimize Contention - http://www.ddj.com/hpc-high-performance-computing/208200273
Explains why in the concurrent world, locality is a first-order issue that trumps most other performance considerations. Now locality is no longer just about fitting well into cache and RAM, but to avoid scalability busters by keeping tightly coupled data physically close together and separately used data far, far apart. |
  |
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. |
  |
Foundations of Multithreaded, Parallel, and Distributed Programming - http://www.pearsonhighered.com/educator/academic/product/0,,0201357526,00%2ben-USS_01DBC.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) |
  |
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. |
  |
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. |
  |
Concurrent Programming: Principles and Practice - http://www.pearsonhighered.com/educator/academic/product/0,,0805300864,00%2ben-USS_01DBC.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) |
  |
The Pillars of Concurrency - http://www.ddj.com/cpp/200001985
This article makes the case that a consistent mental model is needed to talk about concurrency. |
  |
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. |
 |
Deadlock: The Problem and a Solution - http://www.codeguru.com/cpp/misc/misc/threadsprocesses/article.php/c15545/
This article explains what deadlocks are and describes ways of circumventing deadlocks. |
 |
What's New in Boost Threads? - http://www.ddj.com/cpp/211600441
The Boost.Thread library, which enables the use of multiple threads of execution with shared data in portable C++ code, has undergone some major changes. |
 |
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. |
 |
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. |
 |
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) |