[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