Re: [Gc] GC_get_bytes_since_gc locks
ivmai at mail.ru
Wed Aug 24 11:49:05 PDT 2011
Now I don't understand. What is "data safe"? GC_get_total_bytes was made race-free at the same time when GC_get_bytes_since_gc was.
24 08 2011, 19:14 Juan Jose Garcia-Ripoll <juanjose.garciaripoll at googlemail.com>:
> On Wed, Aug 24, 2011 at 5:04 PM, Andy Wingo <wingo at pobox.com> wrote:
> > But I think you are mistaken here, that call is not in a pre-GC hook, so
> > there's no deadlocking problem. Or are you saying that I should be
> > doing these
> > > ./libguile/gc.c: heap_size = GC_get_heap_size ();
> > > ./libguile/gc.c: free_bytes = GC_get_free_bytes ();
> > > ./libguile/gc.c: bytes_since_gc = GC_get_bytes_since_gc ();
> > > with one that is not
> > > ./libguile/gc.c: total_bytes = GC_get_total_bytes ();
> > within an alloc lock?
> No, I am saying that the call to GC_get_total_bytes() is not data safe,
> because internally this function is not protected by a lock! :-) In other
> words, you are mixing functions that lock and guarantee you a data safe
> value, with a call that does neither of those. Wouldn't it be way more
> efficient if you could use the lock just once? Or none at all should it be
> safe to do that?
> Instituto de Física Fundamental, CSIC
> c/ Serrano, 113b, Madrid 28006 (Spain)
More information about the Gc