guile-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Fluids


From: Ludovic Courtès
Subject: Fluids
Date: Sun, 14 Feb 2010 15:32:30 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/23.1 (gnu/linux)

Hi Andy!

Andy Wingo <address@hidden> writes:

> But you can't / shouldn't make a new fluid every time you enter a
> `catch', because currently fluids are never garbage collected! We really
> need to fix this. I think it's a 1.9 regression.

Indeed.  We should use a weak vector or some such instead of the current
scm_gc_malloc’d array.

> To do so effectively, I think you'd need to make fluid objects store
> their values directly, so that the GC doesn't have to go through hoops
> to know that they're collectable. Ideally they would get their values
> via pthread_getspecific; but that would defeat some bits of ours about
> "dynamic states" (not a very useful concept IMO), and the GC would need
> help. Actually it would be nice if libgc supported thread-local
> allocations. (Does it?)

I think dynamically allocating thread-local storage can only be done
with pthread_key_create ().  Libgc knows how to scan pthread keys.  So
we could have fluids be wrappers around pthread keys and fluid-ref would
boil down to pthread_getspecific ().  Then we wouldn’t even need the
fluid number hack.

Is it what you had in mind?

Thanks,
Ludo’.





reply via email to

[Prev in Thread] Current Thread [Next in Thread]