Since we moved to Palo Alto I've had the luxury of walking to work every day.
Usually that's where I do my deep thinking. By the time I cruise by the Whole
Foods it's really easy to ignore the activist-of-the-day petitioning something about global warming.
But yesterday was different.
My walks to and from work were pretty normal. When I got home
I decided to clean up a bit around the house, was doing the dishes, and
had an odd moment of clarity. I threw down the sponge and ran over to my laptop
to jot this down.
Usually I'm at a loss for analogy when explaining how concurrency works to
a developer who has never had to deal with it before. So I throw out all kinds
of highly technical terms and their eyes glaze over. But you know, it's
actually really simple.
Managing concurrency is like doing the dishes. You can hand wash
everything and be sure it gets cleaned perfectly every time or you
can stick the dishes straight into the dish washer and take your chances. Most of the
time everything will come out clean, but every couple loads you'll get a dish you need
to wash again. Going straight into the dishwasher is way faster, and you can even
do more than one dish at a time (assuming you have two hands).
If you want the technical description, I leave that as an excercise to the reader.
Here's a Wikipedia article.
And another over at Microsoft
that's specific to database concurrency. See, told ya it's like doing the dishes.
About the author: JD Conley is the Chief Software Architect at Hive7, a Silicon Valley startup that makes massively multiplayer web games. Our top title, Knighthood, has over 4 million players and we are always working on cool new web games! Interested in making games with .NET? Drop me a line at jdc at hive7 dot com.