comp.lang.ada
 help / color / mirror / Atom feed
* How to avoid unreferenced objects (mutexes etc)
@ 2002-01-11 13:48 Dmitry A. Kazakov
  2002-01-11 13:52 ` Lutz Donnerhacke
                   ` (4 more replies)
  0 siblings, 5 replies; 41+ messages in thread
From: Dmitry A. Kazakov @ 2002-01-11 13:48 UTC (permalink / raw)


Hi all!

I have a question.

Let I implement mutex and locking objects as follows:

protected type Mutex is
   entry Seize;
   procedure Release;
private
   Owned : Boolean := False;
end Mutex;

type Lock (Resource : access Mutex) is new
   Ada.Finalization.Limited_Controlled with null record;
procedure Initialize (Object : in out Lock) is
begin
   Object.Resource.Seize;
end Initialize;
procedure Finalize (Object : in out Lock) is
begin
   Object.Resource.Release;
end Finalize;

The idea is to write critical sections as follows:

   Temp : Lock (Mutex_of_a_resource'Access);
begin
   ...  -- Safe access to the resource
end; -- Mutex is released even if an exception propagates

The problem is that the object Temp is never referenced. The compiler
complains of that, but it is a minor problem. The questions are

1. Has the compiler right to optimize out Temp?
2. Is there a better solution?

Thanks,
Dmitry Kazakov



^ permalink raw reply	[flat|nested] 41+ messages in thread

end of thread, other threads:[~2002-01-17 19:05 UTC | newest]

Thread overview: 41+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2002-01-11 13:48 How to avoid unreferenced objects (mutexes etc) Dmitry A. Kazakov
2002-01-11 13:52 ` Lutz Donnerhacke
2002-01-11 14:47 ` Robert A Duff
2002-01-11 18:02 ` Jeffrey Carter
2002-01-11 19:40 ` Robert Dewar
2002-01-12 10:18   ` Martin Dowie
2002-01-14  8:54   ` Dmitry A. Kazakov
2002-01-12  1:11 ` Nick Roberts
2002-01-12 22:04   ` Matthew Heaney
2002-01-13  5:45     ` Nick Roberts
2002-01-13  8:21       ` tmoran
2002-01-13 16:12         ` Nick Roberts
2002-01-13 15:08       ` Simon Wright
2002-01-15 17:53         ` Nick Roberts
2002-01-13 16:51       ` Jeffrey Carter
2002-01-14 23:32       ` Matthew Heaney
2002-01-15  8:53         ` Dmitry A. Kazakov
2002-01-14  8:31     ` Jean-Pierre Rosen
2002-01-14  9:42   ` Dmitry A. Kazakov
2002-01-15 15:41     ` Matthew Heaney
2002-01-15 16:18       ` Hyman Rosen
2002-01-15 16:57       ` Darren New
2002-01-15 18:57         ` Matthew Heaney
2002-01-16  0:57           ` Darren New
2002-01-16 16:35             ` Stephen Leake
2002-01-16 18:07               ` Darren New
2002-01-16 23:18                 ` Matthew Heaney
2002-01-16 23:04             ` Matthew Heaney
2002-01-17  0:21               ` Darren New
2002-01-16 15:18       ` Dmitry A. Kazakov
2002-01-15 18:59     ` Nick Roberts
2002-01-16 15:05       ` Dmitry A. Kazakov
2002-01-16 18:30         ` Matthew Heaney
2002-01-17  8:58           ` Dmitry A. Kazakov
2002-01-17  9:19             ` Lutz Donnerhacke
2002-01-17 10:42               ` Dmitry A. Kazakov
2002-01-17 10:55                 ` Lutz Donnerhacke
2002-01-17 15:30                   ` Dmitry A. Kazakov
2002-01-17 16:29                     ` Lutz Donnerhacke
2002-01-16 20:28         ` Robert A Duff
2002-01-17 19:05         ` Nick Roberts

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