22 Jul 04:12
finalizers vs. weak pointers
From: Ivan Shmakov <ivan <at> theory.asu.ru>
Subject: finalizers vs. weak pointers
Newsgroups: gmane.lisp.scheme.scheme48
Date: 2008-07-22 02:14:02 GMT
Subject: finalizers vs. weak pointers
Newsgroups: gmane.lisp.scheme.scheme48
Date: 2008-07-22 02:14:02 GMT
Seemingly, weak pointers are invalidated before the finalizers
for the object are run. I wonder, what is the reason behind
such a behaviour?
foo> (define weak-pointer
(let* ((s (string #\f #\o #\o))
(w (make-weak-pointer s)))
(add-finalizer! s
(lambda (obj)
(write `(finalizing: ,obj))
(newline)
(write `(weak-pointer
=> ,(weak-pointer-ref w)))
(newline)))
w))
; no values returned
foo> ,collect
Before: 2009301 out of 3000000 words available
After: 2038984 out of 3000000 words available
foo> (finalizing: "foo")
(weak-pointer => #f)
foo>
RSS Feed