
Introduction 11
Chop herbs
Cook sauce
Combine and serve
Crush tomato
Boil water
Cook pasta
Drain pasta
FIGURE 1.1: Dependencies in a simple cooking activity. Arrows point
from activities to those that depend on their completion in order to proceed.
currency. Boiling a pot of water at the same time that we prepare part of
the meal is just a natural thing we do in the kitchen, and it is an inherently
parallel operation. The fact that we can understand, follow, and occasionally
write recipes means we understand basic issues that arise in concurrent tasks
where dependencies are important and sequential subsets of operations are
used. Concurrency really isn’t