-
Compares Windows NT and Solaris on a symmetric multiprocessor machine.
-
Describes lock-free data sharing, otherwise known as "wait-free data sharing" as an alternative to the use of locks.
-
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.
-
An expressive C++ thread synchronization library.
-
Part of the Computer Science Bibliography Collection.
-
To avoid problems with shared state working with multiple threads, Vinoski recommends a programming language like Erlang rather than C++ or Java.
-
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)
-
Resources on designing a thread class in C++. Provides introduction, basic approach, implementation and using the class thread in C++.
-
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)
-
Technical article, covering Amdahl's Law, latencies and bandwidth, on-chip multiprocessing, Jackson technology, and simultaneous multithreading. (SystemLogic.net)
-
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.
-
Gives an introduction to priority inversion and shows a pair of techniques to avoid them.
-
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.
-
Interprocess communication is an essential component of modern software engineering. Often, lock-free IPC is accomplished via special processor commands. This article propose a communication type that requires only atomic writing of processor word from processor cache into main memory and atomic processor word reading from main memory into the processor register or processor cache.
-
Describes a number of general purpose debugging techniques for multi-threaded applications.
-
Provides example C++ classes implementing a series of synchronization objects useful for building portable (Solaris and Win32) multithreaded applications.
-
Use of synchronization mechanisms like semaphores, monitors, and critical regions can lead to uncontrolled priority inversion. [PDF file]
-
Very lightweight stackless threads; give linear code execution for event-driven systems, designed to use little memory; library is pure C, no platform-specific Assembly; usable with or without OS. Open source, BSD-type license.
-
Higher order threads for C++; tutorial and reference manual.
-
Focuses on the implications of concurrency for software and its consequences for both programming languages and programmers. (Herb Sutter and James Larus)
-
The State Threads is a small application library which provides a foundation for writing fast and highly scalable Internet applications (e.g., web, proxy, mail servers) on UNIX-like platforms. It offers a threading API for structuring a network application as an event-driven state machine.
-
Comparing Solaris, Linux, and Windows NT threads.
-
The biggest sea change in software development since the OO revolution is knocking at the door, and its name is Concurrency.
-
This article makes the case that a consistent mental model is needed to talk about concurrency.
-
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.
-
Dave Butenhof's comparison of thread implementations.
-
Explains how to use lock hierarchies to avoid deadlock by assigning each shared resource a level that corresponds to its architectural layer.
-
An advanced object-oriented, cross-platform C++ threading and synchronization library. [GPL]
-
Frequently asked questions (by Bryan O'Sullivan).
-
Discusses the usage of the volatile keyword in multithreaded C++ programs.