[racket] Racket and concurrency

From: Rüdiger Asche (rac at ruediger-asche.de)
Date: Wed Jul 4 13:04:17 EDT 2012

ok, "too well" obviously is a wrong wording, good catch. I meant "too  
well intended." In linear programming, it normally doesn't hurt to add  
a little extra code here and there (even when it's not good style),  
but in concurrent programming an example for "not good enough" is "not  
syncronized well enough" whereas an example for "too well intended" is  
oversyncronized which may end up in deadlocks, convoy effects, factual  
coroutines or other things that not only annihilate the advantages of  
concurrent programming but frequently make the runtime behavior worse  
and harder to maintain than without concurrency at all.

a typical attitude you'll frequently find in people who don't do it  
well enough is "ok, there is some concurrency problem, so I'll play  
with a delay here and a timeout there until it appears to work." A  
typical attitude you'll frequently find in people who do it too well  
intended is "ok, there is some concurrency problem, so I'll add a  
semaphore here and a critical section there" without really analyzing  
whether there is conflict potential. The first person will most  
probably get into trouble when the problem shows up again in the  
field, and the second will get in trouble when his application not  
unly doesn't run faster than before he added concurrency but locks up  
in the field (frequently only in hard to track fringe conditions such  
as full moon).

Quoting Harry Spier <vasishtha.spier at gmail.com>:

> On Tue, Jul 3, 2012 at 4:07 PM, Rüdiger Asche <rac at ruediger-asche.de> wrote:
>> keep in mind that concurrent software desing
>> is one of the outer space limits of computation still - one of the things
>> that won't work if you don't do it good enough but likewise won't work if
>> you do it too well.
> First thanks for your detailed reply.
> I'm not clear what you mean by "won't work if you do it too well".
> Thanks,
> Harry

Posted on the users mailing list.