Channels ▼

Jack Woehr

Dr. Dobb's Bloggers

A == !A or What Happened to my App?

January 30, 2009

Most of us have read about the philosophers dining with insufficient chopsticks and the curved section of single-track railway in the mountain pass. These are the beginner examples of resource conflict and deadlock that serve as an introduction in comp sci texts to the challenges of parallel execution.

But they are coarse examples, and the world of multiprogramming today is very finely grained indeed.

Applications properly designed for multithreading on a single processor using all the approved locks and semaphors can still misbehave on multiple processors.Reasoning from first causes explains this phenomenon very neatly: Only on multiple processors can A == !A at the same slice of execution. This can never happen in the sequential emulation of parallel processing in which real-world application software evolved, but when two threads can genuinely execute simultaneously, an application can genuinely be in two states at once.

The assumption that your favorite threading library in all its various releases is parallel-safe is not a priori a warranted assumption. Theory can only produce software reliable to the degree the theory can be proven in tested execution. There is a great deal of library code in the world of the software development that is provably quite thread-safe but is not provably parallel-execution-safe.

Libraries and models explicitly designed for parallel execution are thus a good bet even for applications which are not notably parallel in their data processing model.

Erlang is very attractive for those who prefer a complete, self-contained theoretically consistent environment, as one reader posted recently. Perhaps more readily accessible to those of us wedded to more prevalent development languages (C++ of course) is Intel's compiler suite which features OpenMP support.

I will be working with tools such as the above-mentioned in exploring the brave new world of applications conscientiously targeted to multiple processor execution environments.

Related Reading

More Insights

Currently we allow the following HTML tags in comments:

Single tags

These tags can be used alone and don't need an ending tag.

<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags

These require an ending tag - e.g. <i>italic text</i>

<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task. However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

Disqus Tips To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy.