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/
next prev parent 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