The latest Effective Concurrency column, “Interrupt Politely”, just went live on DDJ’s site, and will also appear in the print magazine. From the article:
We want to be able to stop a running thread or task when we discover that we no longer need or want to finish it. As we saw in the last two columns, in a simple parallel search we can stop other workers once one finds a match, and when speculatively running two alternative algorithms to compute the same result we can stop the longer-running one once the first finds a result. [1,2] Stopping threads or tasks lets us reclaim their resources, including locks, and apply them to other work.
But how do you stop a thread or task you longer need or want? Table 1 summarizes the four main ways, and how they are supported on several major platforms. Let’s consider them in turn. …
I hope you enjoy it.
Finally, here are links to previous Effective Concurrency columns (based on the dates they hit the web, not the magazine print issue dates):
| July 2007 | The Pillars of Concurrency |
| August 2007 | How Much Scalability Do You Have or Need? |
| September 2007 | Use Critical Sections (Preferably Locks) to Eliminate Races |
| October 2007 | Apply Critical Sections Consistently |
| November 2007 | Avoid Calling Unknown Code While Inside a Critical Section |
| December 2007 | Use Lock Hierarchies to Avoid Deadlock |
| January 2008 | Break Amdahl’s Law! |
| February 2008 | Going Superlinear |
| March 2008 | Super Linearity and the Bigger Machine |
| April 2008 | Interrupt Politely |