[gclist] Re: gclist-digest V3 #84

Richard A. O'Keefe ok@atlas.otago.ac.nz
Wed, 21 Jun 2000 11:57:40 +1200 (NZST)


Charles Fiterman <cef@geodesic.com> wrote:
	Most programs these days are multi threaded which means even if
	collection occurs only at allocation points any thread can see
	it as happening anywhere.
	
Surely Erlang can't be the only system with a per-thread heap?
(The concurrent version of Quintus Prolog, which Tim Lindholm built,
also did this, if I remember correctly.)  The reason for having a
per-thread heap is precisely so that other threads *don't* need to
be stopped.  Erlang does have "binaries" that are shared between threads,
but they can't contain pointers, so a form of reference counting would
work nicely for them.

	Since we were discussing conservative collection let me point out. If a
	language supports finalizers or their relatives e.g. weak pointers, death
	notices etc. conservative collection is a problem. Aunt Edna's social
	security number can look like a pointer and impede the collection of an
	object. Now impeding the collection of an object is mostly harmless but
	impeding its finalizer, death notice etc. is not harmless since mutator
	semantics can depend on it. 
	
But finalisers have that problem _anyway_.  *All* garbage collection is
conservative to a greater or lesser degree, even the reference-counting
scheme in Limbo.  (Reason:  unsolvability of the Halting Problem, basically.)