Threads
- 1
- 1024cores
- A site devoted to lock-free algorithms, scalable architecture, multicore design patterns, parallel computations, threading libraries, tooling support and related topics.
- 2
- A Thread Performance Comparison
- Compares Windows NT and Solaris on a symmetric multiprocessor machine.
- 3
- Application-Level Abstractions for Lock-Free Data Sharing
- Describes lock-free data sharing, otherwise known as "wait-free data sharing" as an alternative to the use of locks.
- 4
- Apply Critical Sections Consistently
- 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.
- 6
- Fundamental Concepts of Parallel Programming
- Explains fundamental concepts for moving from a linear to a parallel programming model
- 7
- Generic Synchronization Policies in C++
- 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.
- 8
- Introduction to Priority Inversion
- Gives an introduction to priority inversion and shows a pair of techniques to avoid them.
- 9
- It's Not Always Nice To Share
- It isn't just languages that have poor support for thread local storage, but operating systems too
- 10
- Lock Options
- 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.
- 11
- Lock-Free Code: A False Sense of Security
- Writing lock-free code can confound anyone-even expert programmers, as Herb shows in this article.
- 12
- Maximize Locality, Minimize Contention
- 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.
- 13
- Multi-threaded Debugging Techniques
- Describes a number of general purpose debugging techniques for multi-threaded applications.
- 14
- Multithreaded File I/O
- So far multithreaded file I/O is a under-researched field. Although its simple to measure, there is not much common knowledge about it. The measurements presented here show that multithreading can improve performance of file access directly, as well as indirectly by utilizing available cores to process the data read.
- 15
- Protothreads
- 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.
- 16
- Real-world Concurrency
- Describes some key principles that will help mastering the "black art" of writing multithreaded code.
- 17
- Sharing Is the Root of All Contention
- Sharing requires waiting and overhead, and is a natural enemy of scalability. This article focuses on one important case, namely mutable (writable) shared objects in memory, which are an inherent bottleneck to scalability on multicore systems.
- 18
- Software and the Concurrency Revolution
- Focuses on the implications of concurrency for software and its consequences for both programming languages and programmers. (Herb Sutter and James Larus)