[MLton] Re: Real*.gdtoa not thread safe

Henry Cejtin henry.cejtin at sbcglobal.net
Fri Aug 25 09:25:11 PDT 2006


I checked in a fix to Real*.toManExp, split and gdtoa so that they are thread
safe (just using the One structure).

It really is sad to have to worry about this kind of stuff,  and  I  am  sure
that there must be many other places where this needs to be done.

I  tested  things  and  I couldn't perceive any slow down, but in more light-
weight  cases,  we  could  make  One.use  REALLY  cheap   by   avoiding   the
Primitive.Thread.atomic{Begin, End} by having the following test-and-set kind
of primitive:
    val fetchAndUpdate: 'a ref * 'a -> 'a
which atomically fetches the old contents  and  stores  the  provided  value,
returning the old value.

The point is that (I am pretty sure) that that code would be `atomic' because
there are no safe points in it any way.



More information about the MLton mailing list