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.
Lock Options
- http://www.ddj.com/cpp/212201754
- Presents a solution to races and deadlocks based on a well-known deadlock-avoidance protocol and shows how it can be enforced by the compiler. It can be applied to programs in which the number of locks is fixed and known up front.
Lock-free Interprocess Communication
- http://www.ddj.com/cpp/189401457
- 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.
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.
Protothreads
- http://www.sics.se/~adam/pt/
- 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.
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.