From: ssh9614@hotmail.com (Bj?rn)
Subject: Finalization of a record containing a task
Date: 16 Feb 2005 12:35:30 -0800
Date: 2005-02-16T12:35:30-08:00 [thread overview]
Message-ID: <d56673df.0502161235.c69cc50@posting.google.com> (raw)
I'm trying to implement a form of self modifying ADT, containing an
active task.
I would prefer that the user of the ADT not need to do any "extra"
operations on the ADT when the user is finished with it, rather have
the task terminate automatically when the type goes out of scope.
I do not see how I can manage this since the ADT does not seem to
finalize as long as the tasks have not terminated.
How can I solve this? Should I rather try a different approach?
Currently it looks something like this:
package PKG is
type T_ADT is new Limited_Controlled with private
...
private
task type T_Worker is
entry Start;
entry Stop;
...
end task;
procedure Initialize (T : in out T_ADT);
procedure Finalize (T : in out T_ADT);
type T_ADT is new Limited_Controlled with
record
X : Some_Type;
Worker : T_Worker;
end record;
end PKG;
package body PKG is
task T_Worker is
{Inner task of T_Worker}
begin
loop
select
accept Start;
or
accept Stop;
or
...
or
delay until Some_Time;
end select;
end loop;
end PKG;
Best regards,
Bj�rn
next reply other threads:[~2005-02-16 20:35 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-02-16 20:35 Bj?rn [this message]
2005-02-16 20:49 ` Finalization of a record containing a task Stephen Leake
2005-02-16 21:20 ` Adrien Plisson
2005-02-16 22:09 ` Robert A Duff
2005-02-17 8:24 ` Adrien Plisson
2005-02-18 0:17 ` Robert A Duff
2005-02-17 9:13 ` Dmitry A. Kazakov
2005-02-18 0:13 ` Robert A Duff
2005-02-18 2:34 ` Randy Brukardt
2005-02-18 11:27 ` Dmitry A. Kazakov
2005-02-16 22:08 ` Robert A Duff
2005-02-21 13:20 ` Craig Carey
2005-02-21 21:41 ` Robert A Duff
2005-02-22 0:15 ` Randy Brukardt
2005-02-17 17:50 ` Bj?rn
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox