The latest Effective Concurrency column, “The Many Faces of Deadlock”, just went live on DDJ’s site, and also appears in the print magazine. From the article:
… That’s the classic deadlock example from college. Of course, two isn’t a magic number. An improved definition of deadlock is: “When N threads enter a locking cycle where each tries to take a lock the next already holds.”
“But wait,” someone might say. “I once had a deadlock just like the code you just showed, but it didn’t involve locks at all—it involved messages.” …
I hope you enjoy it.
Finally, here are links to previous Effective Concurrency columns (based on the magazine print issue dates):
| August 2007 | The Pillars of Concurrency |
| September 2007 | How Much Scalability Do You Have or Need? |
| October 2007 | Use Critical Sections (Preferably Locks) to Eliminate Races |
| November 2007 | Apply Critical Sections Consistently |
| December 2007 | Avoid Calling Unknown Code While Inside a Critical Section |
| January 2007 | Use Lock Hierarchies to Avoid Deadlock |
| February 2008 | Break Amdahl’s Law! |
| March 2008 | Going Superlinear |
| April 2008 | Super Linearity and the Bigger Machine |
| May 2008 | Interrupt Politely |
| June 2008 | Maximize Locality, Minimize Contention |
| July 2008 | Choose Concurrency-Friendly Data Structures |
| August 2008 | The Many Faces of Deadlock |