- The Pillars of Concurrency (Aug 2007)
- How Much Scalability Do You Have or Need? (Sep 2007)
- Use Critical Sections (Preferably Locks) to Eliminate Races (Oct 2007)
- Apply Critical Sections Consistently (Nov 2007)
- Avoid Calling Unknown Code While Inside a Critical Section (Dec 2007)
- Use Lock Hierarchies to Avoid Deadlock (Jan 2008)
- Break Amdahl’s Law! (Feb 2008)
- Going Superlinear (Mar 2008)
- Super Linearity and the Bigger Machine (Apr 2008)
- Interrupt Politely (May 2008)
- Maximize Locality, Minimize Contention (Jun 2008)
- Choose Concurrency-Friendly Data Structures (Jul 2008)
- The Many Faces of Deadlock (Aug 2008)
- Lock-Free Code: A False Sense of Security (Sep 2008)
- Writing Lock-Free Code: A Corrected Queue (Oct 2008)
- Writing a Generalized Concurrent Queue (Nov 2008)
- Understanding Parallel Performance (Dec 2008)
- Measuring Parallel Performance: Optimizing a Concurrent Queue (Jan 2009)
- volatile vs. volatile (Feb 2009)
- Sharing Is the Root of All Contention (Mar 2009)
- Use Threads Correctly = Isolation + Asynchronous Messages (Apr 2009)
- Use Thread Pools Correctly: Keep Tasks Short and Nonblocking (Apr 2009)
- Eliminate False Sharing (May 2009)
- Break Up and Interleave Work to Keep Threads Responsive (Jun 2009)
- The Power of “In Progress” (Jul 2009)
- Design for Manycore Systems (Aug 2009)
- Avoid Exposing Concurrency – Hide It Inside Synchronous Methods (Oct 2009)
- Prefer structured lifetimes – local, nested, bounded, deterministic (Nov 2009)
- Prefer Futures to Baked-In “Async APIs” (Jan 2010)
(на случай, если я перепутал ссылки где-то, вот первоисточник).
Комментариев нет:
Отправить комментарий