[Haskell-cafe] what does "atomically#" mean?
Ryan Ingram
ryani.spam at gmail.com
Sat Jan 31 05:49:28 EST 2009
That code is in <ghc root>/rts/STM.c
-- ryan
2009/1/30 Daryoush Mehrtash <dmehrtash at gmail.com>:
> 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/
>
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe
>
>
More information about the Haskell-Cafe
mailing list