From: Robert A Duff <bobduff@shell01.TheWorld.com>
Subject: Re: protected objects and external call
Date: 23 Jan 2004 12:19:49 -0500
Date: 2004-01-23T12:19:49-05:00 [thread overview]
Message-ID: <wccllnytwei.fsf@shell01.TheWorld.com> (raw)
In-Reply-To: 2tfrub.25v.ln@skymaster
"Jean-Pierre Rosen" <rosen@adalog.fr> writes:
> "Robert A Duff" <bobduff@shell01.TheWorld.com> a �crit dans le message de
> > > This is why it is considered a potentially blocking operation, and as
> > > such disallowed in a protected operation.
> >
> > No, I don't think that's quite right. Entry calls are potentially
> > blocking, and you're not supposed to call them from inside a protected
> > procedure. (Actually, it's a bounded error, and some compilers allow
> > it.) But a protected procedure can call another protected procedure
> > with an external call. It's up to the programmer to make sure it's not
> > the same protected object. (You also have to obey the priority
> > ceiling rules.)
> >
> > In other words, merely grabbing the lock of a PO is *not* considered
> > blocking or potentially blocking in Ada, and no queue-ing need be
> > involved.
> >
> 9.5.1(16): [Potentially blocking operations]
> an external call on a protected subprogram (or an external requeue)
> with the same target object as that of the protected action;
Ah, thanks, I had forgotten that. Note that this is *only* talking
about the deadlocking case -- it's just fine to call some other PO's
procedures, and you can't detect this at compile time. The AARM
explains, "This is really a deadlocking call, not a blocking call...."
- Bob
prev parent reply other threads:[~2004-01-23 17:19 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-01-22 16:51 protected objects and external call Evangelista Sami
2004-01-22 18:28 ` Robert A Duff
2004-01-23 8:59 ` Jean-Pierre Rosen
2004-01-23 14:53 ` Robert A Duff
2004-01-23 15:50 ` Jean-Pierre Rosen
2004-01-23 17:19 ` Robert A Duff [this message]
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox