comp.lang.ada
 help / color / mirror / Atom feed
From: Maciej Sobczak <no.spam@no.spam.com>
Subject: Re: question about tasks, multithreading and multi-cpu machines
Date: Fri, 17 Mar 2006 09:22:21 +0100
Date: 2006-03-17T09:22:21+01:00	[thread overview]
Message-ID: <dvdrjt$3rb$1@sunnews.cern.ch> (raw)
In-Reply-To: <IyjSf.622480$084.201819@attbi_s22>

Jeffrey R. Carter wrote:

>> The difference between "task" and "thread" is that "task" is something 
>> to do, whereas "thread" is a way to do it.
> 
> The way to design SW in a decent language such as Ada is to create in SW 
> a model of the problem. If your problem includes multiple tasks to be 
> completed concurrently, then your SW model of the problem should include 
> multiple objects which are models of these tasks and which execute 
> concurrently.

Makes sense, but is biased towards single programming paradigm.

Consider a simple example of two long vectors that need to be added. In 
the simplest case you do this:

    for I in Vector'Range loop
       V3(I) := V1(I) + V2(I);
    end loop;

and you're done.

Now, assume that you want to target dual-CPU machine and you *know* that 
you could greatly benefit from making things in paraller.

Do you see any need to model the above sentence using additional objects?
I don't, because in the *application domain* no additional type nor 
object was created by just computing things in paraller.

That's why the "lightweight concurrency", like in Occam, would be more 
appropriate here. Something like this:

declare
    procedure Add_Range(First, Last : in Index_Range) is
    begin
       for I in First .. Last loop
          V3(I) := V1(I) + V2(I);
       end loop;
    end Add_Range;
begin
    Add_Range(Vector'First, Vector'Last / 2);
with
    Add_Range(Vector'Last / 2 + 1, Vector'Last);
end;

(syntax taken from the top of my head)

I see the above as better expressing what is really done.
The same example using additional types or objects would not make the 
code more readable for me.


-- 
Maciej Sobczak : http://www.msobczak.com/
Programming    : http://www.msobczak.com/prog/



  reply	other threads:[~2006-03-17  8:22 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
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 [this message]
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