comp.lang.ada
 help / color / mirror / Atom feed
From: Ole-Hjalmar Kristensen <ole-hjalmar.kristensen@substitute_employer_here.com>
Subject: Re: question about tasks, multithreading and multi-cpu machines
Date: 16 Mar 2006 11:23:46 +0100
Date: 2006-03-16T11:23:46+01:00	[thread overview]
Message-ID: <wvbrslpizo0d.fsf@sun.com> (raw)
In-Reply-To: dvb69k$88t$1@sunnews.cern.ch

Actually, I think the Ada task concept very closely match the way the
term task is used in programs for project planning and organizers.  An
Ada task definition really says what needs to be done, it does not
consider the mapping to OS processes or threads, only the steps to get
the job done, and the interfaces to other tasks. A task may not
terminate before its sub-tasks terminate. Much like the planning stage
of a project, I would say. Luckily, you do not have to hunt for
resources or map tasks to threads or processes, the compiler and run
time system does it for you. Also observe that the specification of
protected types is such that it is possible to run code which is
realted to two different tasks in the same thread. So I would say that
really, Ada tasks *are* logical tasks, not threads or processes. If you
think about Ada tasks as communicating sequential (logical) processes,
it is perhaps easier to see what I mean.

If you would like more interesting food for thought, have a look at the
Occam language. You have to explicitly tell the compiler if you want
things to be done sequentially, otherwise it is free to run your
statements in parallel :-)

>>>>> "MS" == Maciej Sobczak <no.spam@no.spam.com> writes:

    MS> Jeffrey Creem wrote:
    >> Actually, threads  is misleading since threads are  just tasks minus
    >> rendevous. It  all just depends  on your perspective. Since  Ada had
    >> tasking before  (most) unix  had threads I  think Unix got  the name
    >> wrong :)


    MS> In my humble opinion, Ada got it wrong in the first place.

    MS> {Pre-flame note: below  is a very informal description  of how I think
    MS> about these  terms while designing/programming/etc., not  how they are
    MS> defined in any language/system/etc. standard.}


    MS> What's  funny, the  terminology  is correctly  used  in even  simplest
    MS> programs for project planning, organizers, and such.


    MS> The "task" is something that needs to be done. It's an objective, or a
    MS> goal  to  achieve.  (I'm  not   an  English  native  speaker,  but  my
    MS> dictionaries seem to confirm this.)


    MS> To  actually  perform any  given  work,  some  kind of  "resource"  is
    MS> needed. Whether  it is a human  resource or a  computing resource does
    MS> not matter -

    MS> what's important is that this "resource" is treated as an *ability* to
    MS> perform work. What's even more important is that there might be unused
    MS> resources lying around, which can be just used to perform some work if
    MS> they are available.


    MS> Now, "thread"  is a software  resource that represents the  ability of
    MS> the system to do some work.


    MS> The difference between "task" and "thread" is that "task" is something
    MS> to do, whereas "thread" is a way to do it.


    MS> The tasks in  Ada do not match any of the  above. Other languages (for
    MS> example Java)  also got  it wrong, by  treating threads as  objects or
    MS> even by allowing  a programmer to "subclass" or  "specialize" a thread
    MS> class. None  of the  languages that  I'm aware of  allows me  to treat
    MS> tasks and threads  as they really are, which  means that everybody got
    MS> it wrong in one way or another. :)


    >> So, the only  thing I am trying  to say here is that  people seem to
    >> assume  that task, thread  and process  have some  formal definition
    >> that is all powerful. This is not true.


    MS> Right.

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

-- 
   C++: The power, elegance and simplicity of a hand grenade.



  reply	other threads:[~2006-03-16 10:23 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 [this message]
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
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