[Haskell-cafe] what does "atomically#" mean?

Daryoush Mehrtash dmehrtash at gmail.com
Sat Jan 31 00:01:43 EST 2009


I like to look at the code where the runtime detects a TVar, inside an
atomic block, has been changed by another thread and hence it  aborts the
atomic operation.  Any suggestion as to where I would find the code?

daryoush

On Sun, Dec 7, 2008 at 10:48 PM, Don Stewart <dons at galois.com> wrote:

> dmehrtash:
> >    Any idea was the atomically# mean in the following code?
> >
> >    atomically :: STM a -> IO a
> >    atomically (STM m) = IO (\s -> (atomically# m) s )
> >
> >    Code is from GHC.Conc module
> >    [1]
> http://www.haskell.org/ghc/docs/6.6/html/libraries/base/GHC-Conc.html
>
> It is a primitive hook into the runtime, where transactional memory is
> implemented.
>
> It is documented in the primops module in the GHC source,
>
>    $ cd ghc/compiler/prelude/
>
>    ------------------------------------------------------------------------
>    section "STM-accessible Mutable Variables"
>    ------------------------------------------------------------------------
>
>    primtype TVar# s a
>
>    primop  AtomicallyOp "atomically#" GenPrimOp
>          (State# RealWorld -> (# State# RealWorld, a #) )
>       -> State# RealWorld -> (# State# RealWorld, a #)
>       with
>       out_of_line = True
>       has_side_effects = True
>
>    primop  RetryOp "retry#" GenPrimOp
>       State# RealWorld -> (# State# RealWorld, a #)
>       with
>       out_of_line = True
>       has_side_effects = True
>
>
> Along with other primitives like:
>
> ------------------------------------------------------------------------
> section "Parallelism"
> ------------------------------------------------------------------------
>
>    primop  ParOp "par#" GenPrimOp
>       a -> Int#
>       with
>          -- Note that Par is lazy to avoid that the sparked thing
>          -- gets evaluted strictly, which it should *not* be
>       has_side_effects = True
>
> -- Don
>



-- 
Daryoush

Weblog:  http://perlustration.blogspot.com/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.haskell.org/pipermail/haskell-cafe/attachments/20090130/3d56adf2/attachment.htm


More information about the Haskell-Cafe mailing list