From: dmitry@elros.cbb-automation.de (Dmitry A. Kazakov)
Subject: Re: How to avoid unreferenced objects (mutexes etc)
Date: Mon, 14 Jan 2002 09:42:08 GMT
Date: 2002-01-14T09:42:08+00:00 [thread overview]
Message-ID: <3c429d1c.2624281@News.CIS.DFN.DE> (raw)
In-Reply-To: a1o2h1$sfe3f$5@ID-25716.news.dfncis.de
On Sat, 12 Jan 2002 01:11:43 -0000, "Nick Roberts"
<nickroberts@adaos.worldonline.co.uk> wrote:
[...]
>The general idea is that a mutex is a low-level synchronisation construct,
>and Ada provides a higher-level construct (protected objects) that takes
>away much of the pain and danger of using mutexes directly.
Absolutely. So my suspicion goes. Or else, there must be something
fundamentally wrong [in design] if unused objects are *really*
required. It clearly indicates a *problem*.
I would prefer a monitor based solution as Jeffrey Carter suggested,
but I just failed to design it [properly].
Maybe I should describe the problem. There is a communication channel
implemented as a tagged type. The base type provides low-level I/O
operations. It has read and write tasks serving as monitors. The
problem is with the derived types [potentially an arbitrary number of
them]. They extend the base type and provide layered high-level
operations. Some of them must lock the channel [either read or write
one]. A "natural" solution would be to extend monitors, but alas tasks
are not tagged. An untagged solution requires an increasing number of
wrapping subroutines [thus run-time penalty]. A genericity-based
solution produces a combinatoric explosion of packages used as the
parameters for other packages etc. They must be instantiated at the
library level. In other words it is a mess.
So I chose the lesser evil = mutexes with all that nasy problems of
error recovery, you have pointed. I really do not like it.
Regards,
Dmitry Kazakov
next prev parent reply other threads:[~2002-01-14 9:42 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
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 [this message]
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
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox