[gclist] Some thoughts on finalizer ordering

Charles Fiterman cef@geodesic.com
Tue, 17 Nov 1998 07:56:25 -0600

First I'm presupposing a cooperating system not

something layered on C++ etc.

In this case finalizer ordering is in the semantics

of the mutator and there will be syntax to express

that semantics. That is the user will be able to

express finalizer ordering.

If a buffer object uses a file object in such a way

that the buffer object must finalize first it makes

sense to say all buffer objects in a pass must go

before all file objects. That is ordering can be a

characteristic of class definitions not objects.

In many systems doing this means checks for cycles

can be done at compile time or link time. Where 

classes can be defined at run time it is obvious that 

no checks can be done at compile time but checks can 

be moved back to the point where classes are defined. 

If there is partial evaluation that can still mean

compile time.

Inheritance may make classes less restrictive not

more. Requiring later finalization is more restrictive

than allowing earlier finalization. In terms of 

restrictivness the buffer object is less restrictive

than the file object because it could have been

finalized later assuming the finalizer worked.

When objects are composed the parts must all be

finalized at the same time. If there is a confilct

the user must resolve it. The user must use notation 

for this so we know he understands the problem. The 

ideal notation is to allow the surrounding class to 

invoke the sub finalizers in its finalizer. 

Suppose you have a file_buffer object with a file

and buffer. There would be notation saying the

sub objects didn't run their own finalizers and

the file_buffer object would run those finalizers.

It would specify its own finalizer sequencing.


Charles Fiterman		  Geodesic Systems

414 North Orleans Suite 410	  Phone 312 832 1221 x223

Chicago IL 60610-4418           FAX   312 832 1230


</color>As the complexity of a system increases our ability to make

precise and yet significant statements about its behavior

diminishes until a threshold is reached beyond which precision

and significance or relevance become almost mutually exclusive

characteristics. -- Lofti Zadeh