From: Simon Wright <simon@pushface.org>
Subject: Re: Container reqs
Date: 31 Oct 2001 06:37:14 +0000
Date: 2001-10-31T06:37:14+00:00 [thread overview]
Message-ID: <x7v3d40co2t.fsf@smaug.pushface.org> (raw)
In-Reply-To: 9rmm2n$q4e$1@nh.pace.co.uk
"Marin David Condic" <dont.bother.mcondic.auntie.spam@[acm.org> writes:
> Seems like that might unreasonably lock up access to some
> object. Also, it isn't clear to me how this would make the object
> task safe? Assume you have a class that the constructor/destructor
> acquire some semaphore. It gets globally declared such that two
> threads can access its functions. Does each thread have to
> check/acquire the semaphore before write operations? Or do you code
> a check of the semaphore into all the critical paths? It isn't clear
> to me how this is supposed to work....
The BCs use this scheme for the "synchronized" components.
Start with a Monitor, probably but not necessarily one per Container
to be locked. It's probably implemented using a protected type with
Seize and Release.
Now create a (Limited_)Controlled Lock type, constrained by an access
to this Monitor. Its Initialize Seizes the Monitor, and its Finalize
releases it.
declare
L : Lock (The_Monitor'access);
begin
-- do stuff
end;
so L's Finalize _will_ get called on exit, and release the Monitor,
even if there's an exception.
With GNAT, you need to add a pragma Warnings (Off, L) because of
course it's not referenced.
Also, you hope that the compiler doesn't optimize L away -- I think
there is an AI which says not to if the type Lock is limited.
And I'm not sure what'll happen with ATC .. deep stuff here.
next prev parent reply other threads:[~2001-10-31 6:37 UTC|newest]
Thread overview: 114+ messages / expand[flat|nested] mbox.gz Atom feed top
2001-10-14 20:46 Container reqs Ehud Lamm
2001-10-14 22:00 ` Larry Kilgallen
2001-10-15 20:04 ` Ehud Lamm
2001-10-16 15:19 ` Ted Dennison
2001-10-16 19:17 ` Darren New
2001-10-14 22:52 ` James Rogers
2001-10-15 1:22 ` Darren New
2001-10-15 20:06 ` Ehud Lamm
2001-10-16 18:29 ` Stephen Leake
2001-10-17 5:55 ` Simon Wright
2001-10-15 20:15 ` Ehud Lamm
2001-10-15 6:49 ` Jeffrey Carter
2001-10-16 15:25 ` Ted Dennison
2001-10-17 12:40 ` John English
2001-10-17 13:16 ` Ted Dennison
2001-10-18 15:26 ` John English
2001-10-18 16:02 ` Ted Dennison
2001-10-17 14:17 ` Ehud Lamm
2001-10-23 8:17 ` John English
2001-10-23 14:23 ` Ehud Lamm
2001-10-23 20:07 ` Stephen Leake
2001-10-23 20:46 ` Ehud Lamm
2001-10-23 20:50 ` Ted Dennison
2001-10-23 21:18 ` Marin David Condic
2001-10-24 8:30 ` Ehud Lamm
2001-10-24 14:08 ` Marin David Condic
2001-10-25 20:10 ` Ehud Lamm
2001-10-25 21:18 ` Marin David Condic
2001-10-25 21:25 ` Marin David Condic
2001-10-23 21:27 ` Larry Hazel
2001-10-23 22:03 ` Ehud Lamm
2001-10-15 14:27 ` Ted Dennison
2001-10-15 17:47 ` Darren New
2001-10-15 20:08 ` Ehud Lamm
2001-10-17 6:08 ` Simon Wright
2001-10-18 20:52 ` Ehud Lamm
2001-10-18 22:29 ` Jeffrey Carter
2001-10-19 12:10 ` Georg Bauhaus
2001-10-19 15:36 ` Stephen Leake
2001-10-19 14:53 ` Ehud Lamm
2001-10-20 11:10 ` Simon Wright
2001-10-21 18:17 ` Stephen Leake
2001-10-22 17:02 ` Ehud Lamm
2001-10-22 17:34 ` David Botton
2001-10-22 18:02 ` Ehud Lamm
2001-10-20 2:44 ` Jeffrey Carter
2001-10-21 18:24 ` Stephen Leake
2001-10-23 1:13 ` Stephen Leake
2001-10-23 2:09 ` Jeffrey Carter
2001-10-23 13:29 ` Ted Dennison
2001-10-24 2:26 ` Jeffrey Carter
2001-10-24 13:54 ` Ted Dennison
2001-10-24 14:02 ` Lutz Donnerhacke
2001-10-24 14:24 ` Marin David Condic
2001-10-24 19:01 ` Stephen Leake
2001-10-25 1:40 ` Jeffrey Carter
2001-10-15 14:39 ` Lutz Donnerhacke
2001-10-15 15:36 ` Marin David Condic
2001-10-16 18:47 ` Stephen Leake
2001-10-16 19:18 ` Marin David Condic
2001-10-15 20:13 ` Ehud Lamm
2001-10-16 8:14 ` Lutz Donnerhacke
2001-10-16 8:50 ` Ehud Lamm
2001-10-16 10:12 ` Lutz Donnerhacke
2001-10-16 9:45 ` Jean-Marc Bourguet
2001-10-16 13:20 ` Ehud Lamm
2001-10-16 15:34 ` Ted Dennison
2001-10-16 18:49 ` Stephen Leake
2001-10-17 6:02 ` Simon Wright
2001-10-16 17:21 ` Jeffrey Carter
2001-10-16 18:57 ` Ted Dennison
2001-10-16 18:59 ` Stephen Leake
2001-10-16 19:38 ` Marin David Condic
2001-10-16 20:01 ` Larry Kilgallen
2001-10-16 20:19 ` Marin David Condic
2001-10-30 6:53 ` Barry Kelly
2001-10-30 14:53 ` Marin David Condic
2001-10-30 16:14 ` Jean-Marc Bourguet
2001-10-30 16:55 ` Marin David Condic
2001-10-31 6:37 ` Simon Wright [this message]
2001-10-30 17:45 ` Stephen Leake
2001-10-16 22:12 ` Robert*
2001-10-17 7:09 ` Jean-Marc Bourguet
2001-10-17 13:36 ` Ted Dennison
2001-10-17 14:12 ` Jean-Marc Bourguet
2001-10-17 15:15 ` Ted Dennison
2001-10-17 16:32 ` Jean-Marc Bourguet
2001-10-17 16:49 ` Ted Dennison
2001-10-17 16:55 ` Ehud Lamm
2001-10-18 7:39 ` Lutz Donnerhacke
2001-10-18 9:03 ` Jean-Marc Bourguet
2001-10-18 17:25 ` Jeffrey Carter
2001-10-18 20:09 ` Lutz Donnerhacke
2001-10-18 22:35 ` Jeffrey Carter
2001-10-19 8:44 ` Lutz Donnerhacke
2001-10-20 11:14 ` Simon Wright
2001-10-21 16:37 ` Paul Duquennoy
2001-10-17 17:18 ` Jeffrey Carter
2001-10-18 8:59 ` Jean-Marc Bourguet
2001-10-18 19:42 ` Simon Wright
2001-10-18 20:55 ` Ehud Lamm
2001-10-22 6:46 ` Kenneth Almquist
2001-10-22 8:04 ` mike
2001-10-22 8:42 ` Lutz Donnerhacke
2001-10-22 16:30 ` Jeffrey Carter
2001-10-22 17:14 ` Ehud Lamm
2001-10-16 11:37 ` Jean-Marc Bourguet
2001-10-16 13:23 ` Ehud Lamm
2001-10-16 13:39 ` Jean-Marc Bourguet
2001-10-16 15:36 ` Vincent Marciante
2001-10-16 16:15 ` Pat Rogers
2001-10-16 19:04 ` Stephen Leake
2001-10-16 15:53 ` Ted Dennison
2001-10-16 15:58 ` Jean-Marc Bourguet
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox