<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
<title>Parallelaware</title>
<link rel="alternate" type="text/html" href="http://blog.devx.com/go-parallel/blog/" />
<link rel="self" type="application/atom+xml" href="http://blog.devx.com/go-parallel/blog/atom.xml" />
<id>tag:blog.devx.com,2008-04-02:/go-parallel/blog/35</id>
<updated>2008-07-08T22:00:47Z</updated>

<generator uri="http://www.sixapart.com/movabletype/">Movable Type Publishing Platform 4.01</generator>

<entry>
<title>More TBB Help</title>
<link rel="alternate" type="text/html" href="http://blog.devx.com/go-parallel/blog/2008/07/more-tbb-help.html" />
<id>tag:blog.devx.com,2008:/go-parallel/blog//35.8201</id>

<published>2008-07-08T21:53:27Z</published>
<updated>2008-07-08T22:00:47Z</updated>

<summary>Blogger Dave Vanden Bout (whose article currently appears on this portal) has been covering multi-core programming in a blog of his own entitled Parallel Panorama. He offers a useful table of contents for his TBB-related articles, reproduced here for your...</summary>
<author>
<name>amorales</name>

</author>


<content type="html" xml:lang="en" xml:base="http://blog.devx.com/go-parallel/blog/">
Blogger Dave Vanden Bout (whose article currently appears on this portal) has been covering multi-core programming in a blog of his own entitled Parallel Panorama. He offers a useful table of contents for his TBB-related articles, reproduced here for your...
<![CDATA[<ol><li><a rel="bookmark" href="http://llpanorama.wordpress.com/2008/02/05/getting-started-with-tbb/">Getting started with TBB</a></li><li><a rel="bookmark" href="http://llpanorama.wordpress.com/2008/02/17/my-first-tbb-program/">My first TBB program!</a></li><li><a rel="bookmark" href="http://llpanorama.wordpress.com/2008/02/23/making-tbb-a-bit-easier/">Making TBB a bit easier…</a></li><li><a rel="bookmark" href="http://llpanorama.wordpress.com/2008/02/26/lets-try-this-again/">Let’s try this again…</a></li><li><a rel="bookmark" href="http://llpanorama.wordpress.com/2008/02/28/upgrading-to-tbb20_017oss/">Upgrading to tbb20_017oss</a></li><li><a rel="bookmark" href="http://llpanorama.wordpress.com/2008/02/28/reductio-ad-absurdum/">Reductio ad absurdum</a></li><li><a rel="bookmark" href="http://llpanorama.wordpress.com/2008/03/05/scanners-arent-those-the-guys-that-make-your-head-explode/">Scanners?  Aren’t those the guys that make your head explode?</a></li><li><a rel="bookmark" href="http://llpanorama.wordpress.com/2008/03/07/parallel_scan-works-kinda-sorta/">parallel_scan works … kinda, sorta</a></li><li><a rel="bookmark" href="http://llpanorama.wordpress.com/2008/05/22/parallel_scan-finally-explained/">parallel_scan finally explained!</a></li><li><a rel="bookmark" href="http://llpanorama.wordpress.com/2008/03/07/14/">Parallel sorting</a></li><li><a rel="bookmark" href="http://llpanorama.wordpress.com/2008/03/09/parallel_do-parallel-done/">parallel_do?  Parallel done!</a></li></ol>]]>
</content>
</entry>

<entry>
<title>Knuth&apos;s Rant</title>
<link rel="alternate" type="text/html" href="http://blog.devx.com/go-parallel/blog/2008/07/knuths-rant.html" />
<id>tag:blog.devx.com,2008:/go-parallel/blog//35.8185</id>

<published>2008-07-07T19:27:10Z</published>
<updated>2008-07-07T19:40:56Z</updated>

<summary> In an April 2008 interview on InformIT, Donald Knuth, Professor Emeritus of The Art of Computer Programming at Stanford University, spoke with Andrew Binstock about various programming topics. While not central to the interview, his digression about multi-core programming...</summary>
<author>
<name>amorales</name>

</author>


<content type="html" xml:lang="en" xml:base="http://blog.devx.com/go-parallel/blog/">
 In an April 2008 interview on InformIT, Donald Knuth, Professor Emeritus of The Art of Computer Programming at Stanford University, spoke with Andrew Binstock about various programming topics. While not central to the interview, his digression about multi-core programming...
<![CDATA[<blockquote>
Donald Knuth: I don't want to duck your question entirely. I might as well flame a bit about my personal unhappiness with the current trend toward multicore architecture. To me, it looks more or less like the hardware designers have run out of ideas, and that they're trying to pass the blame for the future demise of Moore's Law to the software writers by giving us machines that work faster only on a few key benchmarks! I
won't be surprised at all if the whole multithreading idea turns out to be a flop, worse than the "<a href="http://en.wikipedia.org/wiki/Itanium">Itanium</a> approach that was supposed to be so terrific -- until it turned out that the wished-for compilers were basically impossible to write.<br><br>

Let me put it this way: During the past 50 years, I've written well over a thousand programs, many of which have substantial size. I can't think of even five of those programs that would have been enhanced noticeably by parallelism or multithreading. Surely, for example, multiple processors are no help to TeX.<br><br>

How many programmers do you know who are enthusiastic about these promised machines of the future? I hear almost nothing but grief from software people, although the hardware folks in our department assure me that I'm wrong.<br><br>

I know that important applications for parallelism exist -- rendering graphics, breaking codes, scanning images, simulating physical and biological processes, etc. But all these applications require dedicated
code and special-purpose techniques, which will need to be changed substantially every few years.</blockquote>

]]>
</content>
</entry>

<entry>
<title>Can Apple Make Concurrency Fruitful for Developers?</title>
<link rel="alternate" type="text/html" href="http://blog.devx.com/go-parallel/blog/2008/06/can-apple-make.html" />
<id>tag:blog.devx.com,2008:/go-parallel/blog//35.8132</id>

<published>2008-06-30T20:59:49Z</published>
<updated>2008-06-30T21:07:26Z</updated>

<summary>Though there are as of yet no detailed explanations, Apple made grand claims on June 9, 2008 for its Mac OS X Snow Leopard, scheduled to ship in about a year. According to a press release, &quot;Snow Leopard delivers unrivaled...</summary>
<author>
<name>amorales</name>

</author>


<content type="html" xml:lang="en" xml:base="http://blog.devx.com/go-parallel/blog/">
Though there are as of yet no detailed explanations, Apple made grand claims on June 9, 2008 for its Mac OS X Snow Leopard, scheduled to ship in about a year. According to a press release, &quot;Snow Leopard delivers unrivaled...

</content>
</entry>

<entry>
<title>More on TBB&apos;s parallel_reduce</title>
<link rel="alternate" type="text/html" href="http://blog.devx.com/go-parallel/blog/2008/06/more-on-tbbs-pa.html" />
<id>tag:blog.devx.com,2008:/go-parallel/blog//35.8131</id>

<published>2008-06-30T20:37:19Z</published>
<updated>2008-06-30T20:59:30Z</updated>

<summary>From the horse&apos;s mouth... We&apos;re about to publish another Featured Algorithm article describing a real-world developer&apos;s experience with Intel Threading Building Blocks. Casting about for some more examples, I came across this excellent blog by Michael Voss, Observations from Parallel...</summary>
<author>
<name>amorales</name>

</author>


<content type="html" xml:lang="en" xml:base="http://blog.devx.com/go-parallel/blog/">
From the horse&apos;s mouth... We&apos;re about to publish another Featured Algorithm article describing a real-world developer&apos;s experience with Intel Threading Building Blocks. Casting about for some more examples, I came across this excellent blog by Michael Voss, Observations from Parallel...
<![CDATA[Here's an excerpt:

<blockquote>The algorithm that looks like the closest match to mergesort is tbb::parallel_reduce.  Like tbb::parallel_for, tbb::parallel_reduce takes a Range argument and a Body argument.  But in addition to an execute method, the tbb::parallel_reduce Body also requires a join method that is used to combine (perhaps merge?) multiple body objects on the way back up the tree. So, let’s see if we can cast mergesort as a tbb::parallel_reduce…</blockquote>]]>
</content>
</entry>

<entry>
<title>Multi-core on YouTube</title>
<link rel="alternate" type="text/html" href="http://blog.devx.com/go-parallel/blog/2008/06/multicore-on-yo.html" />
<id>tag:blog.devx.com,2008:/go-parallel/blog//35.8119</id>

<published>2008-06-27T18:03:37Z</published>
<updated>2008-06-27T18:14:41Z</updated>

<summary>There are a plethora of multi-core and concurrent programming videos available on YouTube. Check out this Intel Second Life Summit on Multi-core and Software, in which experts from Intel, Microsoft and Dr. Dobbs journal hold a Second Life discussion on...</summary>
<author>
<name>amorales</name>

</author>


<content type="html" xml:lang="en" xml:base="http://blog.devx.com/go-parallel/blog/">
There are a plethora of multi-core and concurrent programming videos available on YouTube. Check out this Intel Second Life Summit on Multi-core and Software, in which experts from Intel, Microsoft and Dr. Dobbs journal hold a Second Life discussion on...
<![CDATA[<br />Some quotes from Tim Mattson:<br /><br />"Automatic parallelism will not solve the problem. We can't just throw a switch and solve these problems."<br /><br />"An issue that I think does not get anywhere near enough attention is the larger programming environment. In many cases what becomes the stumbling block to producing commercially viable code ... Frankly this is why I am really excited about the Microsoft environment, and seeing them getting more and more involved in this. They've led the charge on component software systems and programming environments where you can fit together multiple languages and create these secure environments where things work together."<br /><br />

<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/zLyS-wVF_-s&hl=en"></param><embed src="http://www.youtube.com/v/zLyS-wVF_-s&hl=en" type="application/x-shockwave-flash" width="425" height="344"></embed></object>]]>
</content>
</entry>

<entry>
<title>Gates Gets Concurrent</title>
<link rel="alternate" type="text/html" href="http://blog.devx.com/go-parallel/blog/2008/06/gates-gets-conc.html" />
<id>tag:blog.devx.com,2008:/go-parallel/blog//35.7907</id>

<published>2008-06-04T17:32:03Z</published>
<updated>2008-06-04T17:41:36Z</updated>

<summary>From Bill Gates&apos; Microsoft Tech-Ed 2008 keynote speech yesterday in Orlando, Fla. (his last as full-time chairman of Microsoft): &quot;Looming after that, though, is an even more interesting challenge, which is the clock speed will not increase at the same...</summary>
<author>
<name>amorales</name>

</author>


<content type="html" xml:lang="en" xml:base="http://blog.devx.com/go-parallel/blog/">
From Bill Gates&apos; Microsoft Tech-Ed 2008 keynote speech yesterday in Orlando, Fla. (his last as full-time chairman of Microsoft): &quot;Looming after that, though, is an even more interesting challenge, which is the clock speed will not increase at the same...

</content>
</entry>

<entry>
<title>Does Rent-a-Core Make Sense?</title>
<link rel="alternate" type="text/html" href="http://blog.devx.com/go-parallel/blog/2008/05/does-rentacore.html" />
<id>tag:blog.devx.com,2008:/go-parallel/blog//35.7869</id>

<published>2008-05-31T20:29:14Z</published>
<updated>2008-05-31T20:45:06Z</updated>

<summary>In a future hinted at by Intel&apos;s teraflop prototype processor, will usage-based pricing schemes allow customers and manufacturers to share in the multi-core wealth? That&apos;s the vision of Joseph Sloan and Rakesh Kumar, researchers at the University of Illinois at...</summary>
<author>
<name>amorales</name>

</author>


<content type="html" xml:lang="en" xml:base="http://blog.devx.com/go-parallel/blog/">
In a future hinted at by Intel&apos;s teraflop prototype processor, will usage-based pricing schemes allow customers and manufacturers to share in the multi-core wealth? That&apos;s the vision of Joseph Sloan and Rakesh Kumar, researchers at the University of Illinois at...
<![CDATA[<br />There's the IntelligentBaseline model, in which the purchaser orders a fixed number of cores. The UpgradesOnly allows the user to remotely activate additional cores that have been shipped but not used.&nbsp; The Limited Up/Downgrade allows both increases and decreases in computational power over the life of the system, with attendant payments or refunds. Finally, there are proposals for renting cores or paying for usage of leased cores.<br /><br /><a href="http://www.hpcwire.com/features/17908534.html">The authors claim</a> that manufacturing costs do not rise in lockstep with the number of cores stamped on a die, once initial design and verification phases have been completed.<br />]]>
</content>
</entry>

<entry>
<title>Better Than a Sharp Stick</title>
<link rel="alternate" type="text/html" href="http://blog.devx.com/go-parallel/blog/2008/05/better-than-a-s.html" />
<id>tag:blog.devx.com,2008:/go-parallel/blog//35.7784</id>

<published>2008-05-22T21:30:00Z</published>
<updated>2008-05-22T21:44:26Z</updated>

<summary>While cruising for the latest concurrency news, I came across a tool that isn&apos;t exactly new -- it&apos;s been around for 19 years -- but that&apos;s getting renewed attention beyond its niche in the high performance computing world: The TotalView...</summary>
<author>
<name>amorales</name>

</author>


<content type="html" xml:lang="en" xml:base="http://blog.devx.com/go-parallel/blog/">
While cruising for the latest concurrency news, I came across a tool that isn&apos;t exactly new -- it&apos;s been around for 19 years -- but that&apos;s getting renewed attention beyond its niche in the high performance computing world: The TotalView...
<![CDATA[<br />I had to laugh when I read this copy on their website: "Given the choice between a sharp stick in the eye and debugging multi-threaded code, many developers would think long and hard." TotalView, the company claims, is the non-harming alternative to thread-induced blindness: It makes
debugging threaded C/C++ and       Fortran code as easy as serial code by acquiring and grouping threads as they are
created. You can set breakpoints at the thread level, or analyze mutexes, queues and sections of your code, among many other features. It also tackles Open MP- and MPI-related tangles with a Message Queue Graph that makes "it easy to see where interprocess
communication has gone wrong."<br /><br />Though the tools are clearly aimed at the HPC market, it will be interesting to see if they begin to have more traction among enterprise and consumer software developers as making multi-core performance improvements becomes more urgent.<br />]]>
</content>
</entry>

<entry>
<title>A Spectrum of Developer Opinion</title>
<link rel="alternate" type="text/html" href="http://blog.devx.com/go-parallel/blog/2008/05/a-spectrum-of-d.html" />
<id>tag:blog.devx.com,2008:/go-parallel/blog//35.7030</id>

<published>2008-05-14T00:13:57Z</published>
<updated>2008-05-14T00:18:44Z</updated>

<summary>This recent InfoWorld article (&quot;Multi-core to leave developers in dust?&quot; by columnist Bill Snyder) is somewhat late in reacting to the concurrency hype, though it provides a good overview of recent market maneuvers among chip makers and ISVs. However, it&apos;s...</summary>
<author>
<name>amorales</name>

</author>


<content type="html" xml:lang="en" xml:base="http://blog.devx.com/go-parallel/blog/">
This recent InfoWorld article (&quot;Multi-core to leave developers in dust?&quot; by columnist Bill Snyder) is somewhat late in reacting to the concurrency hype, though it provides a good overview of recent market maneuvers among chip makers and ISVs. However, it&apos;s...

</content>
</entry>

<entry>
<title>Can Google Make Concurrency Commonplace?</title>
<link rel="alternate" type="text/html" href="http://blog.devx.com/go-parallel/blog/2008/05/can-google-make.html" />
<id>tag:blog.devx.com,2008:/go-parallel/blog//35.6833</id>

<published>2008-05-05T22:25:34Z</published>
<updated>2008-05-05T22:56:20Z</updated>

<summary>With the April 7, 2008 preview release of Google App Engine, a new legion of Web developers may rethink their let-them-eat-cake take on concurrency. Google App Engine is a novel developer tool for building and running scalable web applications on...</summary>
<author>
<name>amorales</name>

</author>


<content type="html" xml:lang="en" xml:base="http://blog.devx.com/go-parallel/blog/">
With the April 7, 2008 preview release of Google App Engine, a new legion of Web developers may rethink their let-them-eat-cake take on concurrency. Google App Engine is a novel developer tool for building and running scalable web applications on...
<![CDATA[<br><a href="http://googleappengine.blogspot.com/">The company is urging developers to pay attention to concurrency issues such as datastore entity contention and CPU usage</a> (initial free developer accounts are limited to 200M megacycles of CPU per day). Google also urges profiling application performance: The App Engine uses the Python logging module to view completed or real-time events and errors. But will developers heed these warnings?
<br>The biggest problem facing developers is that pesky tangle called data contention, which can cause latency to mushroom in tandem with spiling traffic: reads and writes on a given entity are sequential. The App Engine datastore uses optimistic locking for concurrency control, <a href="http://code.google.com/appengine/docs/whatisgoogleappengine.html">according to the documentation</a>: "An update of a entity occurs in a transaction that is retried a fixed number of times if other processes are trying to update the same entity simultaneously. Your application can execute multiple datastore operations in a single transaction which either all succeed or all fail, ensuring the integrity of your data."<br><br>

The company is asking developers to post their thoughts on building scalable apps for the Google infrastructure. This space will be spying to see what the response means for concurrency in the mainstream.]]>
</content>
</entry>

<entry>
<title>Blogorriffic: Jeff Atwood vs. Herb Sutter</title>
<link rel="alternate" type="text/html" href="http://blog.devx.com/go-parallel/blog/2008/04/blogorriffic-je.html" />
<id>tag:blog.devx.com,2008:/go-parallel/blog//35.6130</id>

<published>2008-04-29T22:05:05Z</published>
<updated>2008-04-29T23:39:40Z</updated>

<summary>Coding Horror&apos;s Jeff Atwood has modified his controversial claim that quad-cores are a &quot;waste of electricity&quot; for most developers, in response to Herb Sutter&apos;s mini-list of Microsoft products that make use of multicore desktops....</summary>
<author>
<name>amorales</name>

</author>


<content type="html" xml:lang="en" xml:base="http://blog.devx.com/go-parallel/blog/">
Coding Horror&apos;s Jeff Atwood has modified his controversial claim that quad-cores are a &quot;waste of electricity&quot; for most developers, in response to Herb Sutter&apos;s mini-list of Microsoft products that make use of multicore desktops....
<![CDATA[<blockquote>In response to Atwood's original post, <a href="http://herbsutter.wordpress.com/2008/04/18/quad-core-a-waste-of-electricity/">Sutter named three tools that offer speedups on quad-core platforms</a>: <br /><br /><blockquote><p><strong>Visual C++ 2008</strong>’s <a href="http://msdn2.microsoft.com/en-us/library/bb385193.aspx">/MP flag</a>: "I
typically get linear speedups on the compile phase. The link phase is
still sequential, but on most projects compilation dominates."</p><p><strong>Visual Studio</strong>'s <a href="http://msdn2.microsoft.com/en-us/library/9h3z1a69.aspx">parallel project builds</a>
in Batch Build mode, "though that feature didn’t let you compile multiple files in the same
project in parallel." <br /></p><p><strong>Excel 2007</strong>'s <a href="http://msdn2.microsoft.com/en-us/library/bb687899.aspx">parallel recalculation</a>:
"Assuming the spreadsheet is large and doesn’t just contain sequential
dependencies between cells, it usually scales linearly up to at least 8
cores."</p></blockquote>In a valuable read that explores much of the current sentiment about manycore mania, <a href="http://www.codinghorror.com/blog/archives/001103.html">Atwood writes</a>: <br /><br /><blockquote>I implored commenters who felt strongly about the benefits of quad-core
to point me to multitasking benchmarks that showed a profound
difference in performance between 2 and more-than-2 CPU cores. It's
curious. The web is awash in zillions of hardware review websites, yet
you can barely find any multitasking benchmarks on any of them. I think
it's because <b>the amount of multitasking required to seriously load more than two CPU cores borders on the absurd</b>...<br /></blockquote><br /><br /></blockquote>]]>
</content>
</entry>

<entry>
<title>Concurrency on the Web: Responses</title>
<link rel="alternate" type="text/html" href="http://blog.devx.com/go-parallel/blog/2008/04/concurrency-on.html" />
<id>tag:blog.devx.com,2008:/go-parallel/blog//35.6081</id>

<published>2008-04-24T23:23:36Z</published>
<updated>2008-04-25T19:23:14Z</updated>

<summary>Yesterday&apos;s interview with a web developer who is unconvinced that concurrency is a pressing concern yielded these responses from Intel&apos;s James Reinders and Mohammad Haghighat:...</summary>
<author>
<name>amorales</name>

</author>


<content type="html" xml:lang="en" xml:base="http://blog.devx.com/go-parallel/blog/">
Yesterday&apos;s interview with a web developer who is unconvinced that concurrency is a pressing concern yielded these responses from Intel&apos;s James Reinders and Mohammad Haghighat:...
<![CDATA[<p>"This opinion is very specific to web server-oriented programming, and seems to boil down to this: web processing uses concurrency in many ways other than individual concurrent programs, and therefore doesn't seem to need concurrent programs. I would not disagree with that," says Reinders. "So it makes sense to me that someone working in that field would think that the revolution aspect of multi-core feels overhyped or even unreal."</p>

<p>"It is, nevertheless, very real and very active in other aspects of computing. It is important to understand that multi-core processors need concurrency, but that doesn't mean concurrent programs. In fact, if you can get concurrent processes and lots of them --&nbsp; such as in a web server environment -- you are probably better off than having to write concurrent programs."<br />"I just would like to add that even in enterprise database servers that have a roughly similar architecture, multi-threading is considered important," Haghighat explains. "Initially, some of the major databases were using process-level parallelism as this was common in SMP systems. That is, each client would get a separate process on the server. Soon DB architects realized by moving from process model to thread model, there's a good amount of potential performance gain due to the sharing that happens in the memory subsystem and micro-architecture.&nbsp; Care for performance justified the burden of making the database servers thread-safe. I would not be surprised to see the same thing in future on the web servers (e.g., PHP) and middleware."<br /></p>]]>
</content>
</entry>

<entry>
<title>Q&amp;A: Some Say It Ain&apos;t So</title>
<link rel="alternate" type="text/html" href="http://blog.devx.com/go-parallel/blog/2008/04/qa-some-say-it.html" />
<id>tag:blog.devx.com,2008:/go-parallel/blog//35.6057</id>

<published>2008-04-23T18:02:14Z</published>
<updated>2008-04-23T18:09:06Z</updated>

<summary><![CDATA[In our quest to characterize current developer experiences with concurrency, there is value in presenting a spectrum of opinions. In today's post, Parallelaware speaks with&nbsp; London-based blogger and Django Developer at GCap Media, Tomasz Wegrzanowski. While Wegrzanowski has written in...]]></summary>
<author>
<name>amorales</name>

</author>


<content type="html" xml:lang="en" xml:base="http://blog.devx.com/go-parallel/blog/">
<![CDATA[In our quest to characterize current developer experiences with concurrency, there is value in presenting a spectrum of opinions. In today's post, Parallelaware speaks with&nbsp; London-based blogger and Django Developer at GCap Media, Tomasz Wegrzanowski. While Wegrzanowski has written in...]]>
<![CDATA[<b>Parallelaware: Is it wise to keep waiting for better concurrency tools, or should developers dive in to solve their problems now with what's available?<br /></b><br />Wegrzanowski: Waiting is pointless. There are satisfactory solutions to most of the real-world concurrency problems. For the tiny fraction of problems which require something like Erlang you're on your own anyway -- its niche is so small that it won't create the momentum necessary for turning it into a mainstream language.<br /><br /><b>P: Have you changed your view that concurrency is best suited to solve latency problems rather than throughput problems?</b><br /><br />W: You need an order of magnitude more processes/threads/asynchronous I/O handlers/etc. to deal with high latency than with low latency at the same throughput, so concurrency will naturally occur much more frequently in high-latency situations. Achieving only high throughput usually requires less concurrency and simpler concurrency plumbing. It's a common trick to move latency out of your processing. For example, if waiting for<br />HTTP request receive and HTTP response send to complete happens in reverse proxy, the main application doesn't need to be aware it's a high latency operation, and can use dumb HTTP queue as its only concurrency tool.<br /><br /><b>P: Do you find yourself using more concurrency since your 2006 posting (about your concurrent Perl program)? Do you see more concurrency in use among developers of formerly serial programs?<br /></b><br />W: Not much. Because of multicore I sometimes have to use a HTTP or JMS queue where before I'd just process a thing serially, but it doesn't affect the code much.<br /><br />I don't think the much-hyped multicore revolution is real. Vast majority of programs which use sufficient amount of resources to require more than a single CPU are easily decomposable into a bunch of completely independent short-lived single-threaded<br />actions connected by some sort of a queue (actions being either fork()ed, or more commonly these days processed one at a time by some sort of a worker thread). The queue most commonly being plain HTTP, or maybe something like JMS.<br /><br />The end result: You can have hundreds or thousands of processes/threads across many many machines, and each of them is programmed exactly as if it was a single-threaded application. So you want to write them in the most convenient language available, which usually happens to be something like Ruby or Python, or maybe something like Java.<br /><br />The only parts that need to know anything about multithreading is the plumbing, like Apache/ActiveMQ, and it is typically written in C, or maybe Java, as it tends to be really performance-critical.<br /><br /><b>P: Do you still see Erlang as too removed from the commercial world to be a viable solution? Have other tools or languages gained prominence for you in the interim?</b><br /><br />W: There is very little convincing use case for Erlang and concurrency-specific languages. They only makes sense if you need massive number of processes distributed accross massive number of machines (which is somewhat common) which also need massive amount of distributed real-time communication between each other (which almost never happens).<br /><br />I'm not really following concurrency tools much. As I said, their niche is too small, so I don't expect them to gain momentum ever, unless they happen to be highly concurrency-friendly in addition to some other killer feature.<br /><br /><i>Do you agree with his views? Why or why not? Write to <a href="mailto:awebermorales@yahoo.com">Parallelaware</a> with your opinions.<br /></i><br />]]>
</content>
</entry>

<entry>
<title>Joe Duffy on Concurrent Code Inspections</title>
<link rel="alternate" type="text/html" href="http://blog.devx.com/go-parallel/blog/2008/04/joe-duffy-on-co.html" />
<id>tag:blog.devx.com,2008:/go-parallel/blog//35.5592</id>

<published>2008-04-09T00:17:37Z</published>
<updated>2008-04-15T14:49:33Z</updated>

<summary>It&apos;s been 20 years since the concept of source code inspection came into the software development mainstream, and 10 to 15 years since object-oriented code reviews were introduced. In yet another reassuring sign of practical approaches to concurrency, Microsoft blogger...</summary>
<author>
<name>amorales</name>

</author>


<content type="html" xml:lang="en" xml:base="http://blog.devx.com/go-parallel/blog/">
It&apos;s been 20 years since the concept of source code inspection came into the software development mainstream, and 10 to 15 years since object-oriented code reviews were introduced. In yet another reassuring sign of practical approaches to concurrency, Microsoft blogger...
<![CDATA[<p><a href="http://www.bluebytesoftware.com/blog/CommentView,guid,6e62a753-75b9-4486-92e8-e32c38a85ad4.aspx">In this essay</a>, sure to be included in his much anticipated book on concurrent .NET programming, Joe Duffy explains what to look for when reviewing code prior to check-in,  from shared state to the ever-controversial (yet oft-overlooked) issue of code documentation.</p>

<p>This is an excellent, easily digestible checklist for managed-code programmers. Most interesting is his focus on the .NET Common Language Runtime memory model: "I explicitly permute (often on a whiteboard or in notepad) the sections of the code that involve shared loads and stores, using knowledge of the legal reorderings given our memory model, to see if the code breaks."</p>

<p>A useful resource, and an encouraging sign...</p>]]>
</content>
</entry>

<entry>
<title>Concurrency at SD West: Brian Goetz</title>
<link rel="alternate" type="text/html" href="http://blog.devx.com/go-parallel/blog/2008/03/concurrency-at-2.html" />
<id>tag:blog.devx.com,2008:/go-parallel/blog//35.5591</id>

<published>2008-03-11T17:13:14Z</published>
<updated>2008-04-15T14:49:33Z</updated>

<summary>At the recent SD West conference in Santa Clara, CA, concurrency was just barely on the agenda -- but if you were a programmer already on the path to parallelism, there were a few tips ripe for the picking. Brian...</summary>
<author>
<name>amorales</name>

</author>


<content type="html" xml:lang="en" xml:base="http://blog.devx.com/go-parallel/blog/">
At the recent SD West conference in Santa Clara, CA, concurrency was just barely on the agenda -- but if you were a programmer already on the path to parallelism, there were a few tips ripe for the picking. Brian...
<![CDATA[<p>"The primary source of serialization in programs is the exclusive resource lock. The longer locks are held, the worse it gets.<br />
Even when tasks consist only of thread-local computation, there is still serialization inherent in task dispatching," Goetz explained.  "Accessing the task queue and the results container invariably involves serialization." </p>

<p>One answer to this problem is to replace those data structures with ones that impose less serialization. For instance, the synchronous queue has been replaced in Java 6 by a better implementation for concurrency.</p>

<p>The other issue is how to hold locks for less time. Goetz suggested moving thread-local computation out of synchronization blocks, "but don’t make them so small as to split atomic operations." Another trick is to replace synchronization counters with AtomicInteger.</p>

<p>Finally, lock splitting can reduce contention: "You often write one very large lock, and sometimes that big fat lock on your hash map is the bottleneck. You can improve things by replacing with finer granularity locks; replace a synchronized Map with ConcurrentHashMap, which has separate locks for each access."</p>]]>
</content>
</entry>

</feed>