[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Restoring objects
- To: info-mcl
- Subject: Re: Restoring objects
- From: lgm@cbnewsc.ATT.COM (lawrence.g.mayka)
- Date: 30 May 92 21:39:48 GMT
- In-reply-to: lynch@aristotle.ils.nwu.edu's message of 28 May 92 15:38:48 GMT
- Newsgroups: comp.lang.lisp.mcl
- Organization: AT&T Bell Laboratories
- References: <9205281422.AA13547@aristotle.ils.nwu.edu>
- Sender: lgm@cbnewsc.cb.att.com (lawrence.g.mayka)
In article <9205281422.AA13547@aristotle.ils.nwu.edu> lynch@aristotle.ils.nwu.edu writes:
>bill@cambridge.apple.com (Bill St. Clair) writes:
>What are "weak hash tables", how do they work, and what are they good
>for?
I'll be damned if I can say what they're good for. I thought it would be
good for data that would become dated, but then I realized that for
reliability this would require a GC before each gethash, so that's not
right...they must be good for something, but what? There couldn't possibly
be a useless feature in Common LISP, now could there? :-)
For better or for worse, Common Lisp does not define weak hash tables.
Apparently, some vendors have added this feature for its
implementational utility.
Offhand, I see two uses of weak references (through a hash-table
interface or otherwise):
- To provide answers to metaquestions about GC. An example is the
question already cited: "Which instances of class X are still extant
(i.e., not yet garbage-collected)?"
- To permit the use of GC as an audit of data structures. For
example, true "deletion" of an object A requires nulling out all
references to A. But let's say an unexpected abort or even a
programming error leaves one or more references still un-nulled. If
the references are weak, a GC will eventually right the situation.
Lawrence G. Mayka
AT&T Bell Laboratories
lgm@iexist.att.com
Standard disclaimer.