comp.lang.ada
 help / color / mirror / Atom feed
From: Jean-Pierre Rosen <rosen@adalog.fr>
Subject: Re: question about tasks, multithreading and multi-cpu machines
Date: Thu, 16 Mar 2006 19:03:00 +0100
Date: 2006-03-16T19:03:00+01:00	[thread overview]
Message-ID: <k89cvd.3js.ln@hunter.axlog.fr> (raw)
In-Reply-To: <dvc1gl$6qk$1@sunnews.cern.ch>

Maciej Sobczak a �crit :

> The difference between sequential and paraller execution of two 
> instructions (or blocks of instructions, but that's obvious) should be 
> addressed at the level of control structures, not types (nor objects).
> This means that if I want to have these:
> 
> A := 7;
> B := 8;
> 
> executed sequentially, then I write them sequentially - just like above 
> (I already see posts claiming that the compiler or CPU can reorder these 
> instructions, but that's not the point; if the instructions have 
> side-effects, then the sequence is really a sequence and I'm talking 
> about expressing the programmer's intents here).
Actually, in Occam you would write (syntax not guaranteed):
cobegin
    A:=7;
and
    B:=8;
coend;

> Executing those two instructions in paraller should not require from me 
> to define new types, allocate new objects, nor any other thing like 
> this. 
And why? That's your opinion, fine, but what support do you have for it?

The truth is that there are more than one concurrency paradigm. What you 
say is true for concurrent evaluation. You can have it in Ada (although 
it requires more typing) in the following:

declare
    task T1;
    task body T1 is
    begin
       A := 7;
    end T1;

    task T2;
    task body T2 is
    begin
       B := 8;
    end T2;
begin
    null;
end;

Another model of concurrency is for performing concurrent tasks (this 
last word in the usual sense). For example, imagine you want to display 
the time in the upper left corner of your screen. This can be done 
easily with something like:

task Time_Display;
task body Time_Display is
begin
    loop
       Display (Clock);
       delay 1.0;
    end loop;
end Time_Display;

You cannot achieve this with any model of concurrent evaluation!
-- 
---------------------------------------------------------
            J-P. Rosen (rosen@adalog.fr)
Visit Adalog's web site at http://www.adalog.fr



  reply	other threads:[~2006-03-16 18:03 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-03-14 16:26 question about tasks, multithreading and multi-cpu machines Norbert Caspari
2006-03-14 16:51 ` Pascal Obry
2006-03-16  4:27   ` Norbert Caspari
2006-03-16 10:04     ` Alex R. Mosteo
2006-03-14 17:18 ` Jean-Pierre Rosen
2006-03-16  4:22   ` Norbert Caspari
2006-03-16  6:58     ` Jean-Pierre Rosen
2006-03-14 18:49 ` Martin Krischik
2006-03-14 18:56 ` tmoran
2006-03-14 23:01 ` Jeffrey Creem
2006-03-15  1:15   ` Jeffrey R. Carter
2006-03-16  8:06   ` Maciej Sobczak
2006-03-16 10:23     ` Ole-Hjalmar Kristensen
2006-03-16 12:59     ` Dmitry A. Kazakov
2006-03-16 15:11       ` Larry Kilgallen
2006-03-16 15:50       ` Maciej Sobczak
2006-03-16 18:03         ` Jean-Pierre Rosen [this message]
2006-03-16 20:06           ` Dr. Adrian Wrigley
2006-03-17  3:26       ` Randy Brukardt
2006-03-16 20:06     ` Jeffrey R. Carter
2006-03-17  8:22       ` Maciej Sobczak
2006-03-17 11:36         ` Dmitry A. Kazakov
2006-03-17 14:23           ` Maciej Sobczak
2006-03-17 19:10             ` Dmitry A. Kazakov
2006-03-17 19:42         ` Jeffrey R. Carter
2006-03-18  0:27           ` tmoran
2006-03-25 21:28     ` Robert A Duff
     [not found]       ` <43gb22h4811ojjh308r2lqf5qqrujijjok@4ax.com>
2006-03-26  0:44         ` Robert A Duff
2006-03-15  6:46 ` Simon Wright
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox