X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=Control%2FParallel.hs;h=21c9fed6e44b83356a5d41ee2b4b65958451a08e;hb=a70f356e023abdd0abb130cc149b0e3de7469044;hp=e9b021beb89fbe949809589c2fb42d03b302143d;hpb=9fa9bc17072a58c0bae2cce4764d38677e96ac29;p=haskell-directory.git diff --git a/Control/Parallel.hs b/Control/Parallel.hs index e9b021b..21c9fed 100644 --- a/Control/Parallel.hs +++ b/Control/Parallel.hs @@ -2,14 +2,12 @@ -- | -- Module : Control.Parallel -- Copyright : (c) The University of Glasgow 2001 --- License : BSD-style (see the file libraries/core/LICENSE) +-- License : BSD-style (see the file libraries/base/LICENSE) -- -- Maintainer : libraries@haskell.org -- Stability : experimental -- Portability : non-portable -- --- $Id: Parallel.hs,v 1.2 2002/04/24 16:31:37 simonmar Exp $ --- -- Parallel Constructs -- ----------------------------------------------------------------------------- @@ -24,7 +22,7 @@ module Control.Parallel ( import Prelude #ifdef __GLASGOW_HASKELL__ -import GHC.Conc ( par ) +import qualified GHC.Conc ( par ) #endif #if defined(__GRANSIM__) @@ -56,7 +54,27 @@ parAtForNow (I# w) (I# g) (I# s) (I# p) v x y = case (parAtForNow# x v w g s p y #endif -- Maybe parIO and the like could be added here later. -#ifndef __GLASGOW_HASKELL__ + +-- | Indicates that it may be beneficial to evaluate the first +-- argument in parallel with the second. Returns the value of the +-- second argument. +-- +-- @a `par` b@ is exactly equivalent semantically to @b@. +-- +-- @par@ is generally used when the value of @a@ is likely to be +-- required later, but not immediately. Also it is a good idea to +-- ensure that @a@ is not a trivial computation, otherwise the cost of +-- spawning it in parallel overshadows the benefits obtained by +-- running it in parallel. +-- +-- Note that actual parallelism is only supported by certain +-- implementations (GHC with the @-threaded@ option, and GPH, for +-- now). On other implementations, @par a b = b@. +-- +par :: a -> b -> b +#ifdef __GLASGOW_HASKELL__ +par = GHC.Conc.par +#else -- For now, Hugs does not support par properly. par a b = b #endif