From: Geert Bosch <geert@gonzo.sun3.iaf.nl>
Subject: Re: task safe linked list?
Date: 1997/11/23
Date: 1997-11-23T00:00:00+00:00 [thread overview]
Message-ID: <6582m6$4t0$1@gonzo.sun3.iaf.nl> (raw)
In-Reply-To: 3476167d.24974065@SantaClara01.news.InterNex.Net
Tom Moran <tmoran@bix.com> wrote:
Is there a good way to use Protected Types to make a task safe linked
list? I'd like to add/remove things on a dynamice set of lists with a
protected object to ensure serialized access to the links. But where
could the protected object go? Not in any one node because
insert/remove is a three-node operation. Not in any one list root
because these lists are not rooted, but are linked groups, ie, objects
a,b,c are linked together as are d and e and I might add f to a,b,c or
to d,e, or remove b from the former and add it to the latter. It
appears I must use a single global lock on "any fiddling with any
links in any list'. Any other suggestions?
I would use a List_Manager protected type with all necessary tree operations.
Then you just call Some_Manager.Insert (New_Node, List) for example.
It is a good idea to make the Node_Type a limited private type and
put it in a generic package with the List_Manager, so you can be
sure the list is only accessed through the List_Manager.
Then you can use multiple instantiations of the package to create
lists that can be accessed concurrently. Since a new instantiation
will create a new node type, you cannot accidently mix nodes.
Have fun!
Geert
prev parent reply other threads:[~1997-11-23 0:00 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
1997-11-21 0:00 task safe linked list? Tom Moran
1997-11-23 0:00 ` Geert Bosch [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