Linked by Thom Holwerda on Fri 28th Oct 2005 11:17 UTC
Hardware, Embedded Systems Herb Sutter, a software architect from Microsoft, gave a speech yesterday at In-Stat/MDR's Fall Processor Forum. Addressing a crowd mostly consisting of hardware engineers, he talked about how the software world was ill-prepared to make use of the new multicore CPUs coming from Intel and AMD.
Permalink for comment 52670
To read all comments associated with this story, please click here.
james_parker
Member since:
2005-06-29

I must respectfully disagree about the difficulty in writing concurrent code; although more difficult than writing linear code, but it is mostly a matter of learning a few additional concepts and adjusting one's perceptions slightly.

In contrast, it is far more difficult to introduce concurrency into existing linear code without dramatically curtailing the concurrency. In many cases this cannot be done without significant rearchitecture.

With a few exceptions, C++ is also not a bad language to write concurrent code in. Neither garbage collection nor smart pointers are needed. If it is approached with the idea that no more than one thread "owns" a piece of memory (generally exclusive right to update or delete it), the management is relatively straightforward and far more efficient than the two alternatives given. The greatest problem I have found is managing thread exit; threads must not exit while owning any memory.

If a reasonable threading model is started with, most problems yield relatively easily. Tracking down problems is more difficult, but the basic debugging tools are getting far better and the techniques, although nonlinear, are reasonably straightforward.

I have worked extensively with highly concurrent software for over a decade on Unix platforms, utilizing both concurrency using shared addressing in an interprocess and intraprocess context simultaneously; much of that effort being part of a DBMS engine, and learned to do it without any specialized training other than reading and experimenting.

With some training, any reasonable developer ought to be able to learn and use the techniques in six months, sufficient for most application work.

Reply Parent Score: 1