[Haskell-cafe] Re: Data.Unique not "safe" in concurrent
environments (or brain burned)?
Neil Davies
semanticphilosopher at googlemail.com
Sat Sep 1 07:13:07 EDT 2007
Let me answer this myself - brain burnt...
Of course it is OK, that is precisely the semantics of MVars - the are
empty or full, thus assuring the mutual exclusion between threads.
Been a hard week.....
Neil
... so the deeper question - why don't you realise these mistakes till
five minutes *after* you've pressed the send button....
Neil Davies wrote:
> Hi, I was looking over the libraries for bits of GHC (no doubt a standard form of
> relaxation for readers of this list), and noticed the following statement
> (in Data.Unique):
>
> -- | Creates a new object of type 'Unique'. The value returned will
> -- not compare equal to any other value of type 'Unique' returned by
> -- previous calls to 'newUnique'.
>
> This set me thinking - so I looked at the code
>
> newUnique :: IO Unique
> newUnique = do
> val <- takeMVar uniqSource
> let next = val+1
> putMVar uniqSource next
> return (Unique next)
>
> In the concurrent execution world in which we live - I don't think that the implementation
> supports the "uniqueness" statement above - or am I not understanding something?
>
> Cheers
>
> Neil
>
>
>
More information about the Haskell-Cafe
mailing list