final revision to GArrow classes
[ghc-base.git] / Foreign / Concurrent.hs
index 664fa07..e0f2faa 100644 (file)
@@ -1,4 +1,5 @@
-{-# OPTIONS_GHC -fno-implicit-prelude #-}
+{-# LANGUAGE CPP, NoImplicitPrelude #-}
+
 -----------------------------------------------------------------------------
 -- |
 -- Module      :  Foreign.Concurrent
 
 module Foreign.Concurrent
   (
-       -- * Concurrency-based 'ForeignPtr' operations
+        -- * Concurrency-based 'ForeignPtr' operations
 
-       -- | These functions generalize their namesakes in the portable
-       -- "Foreign.ForeignPtr" module by allowing arbitrary 'IO' actions
-       -- as finalizers.  These finalizers necessarily run in a separate
-       -- thread, cf. /Destructors, Finalizers and Synchronization/,
-       -- by Hans Boehm, /POPL/, 2003.
+        -- | These functions generalize their namesakes in the portable
+        -- "Foreign.ForeignPtr" module by allowing arbitrary 'IO' actions
+        -- as finalizers.  These finalizers necessarily run in a separate
+        -- thread, cf. /Destructors, Finalizers and Synchronization/,
+        -- by Hans Boehm, /POPL/, 2003.
 
-       newForeignPtr,
-       addForeignPtrFinalizer,
+        newForeignPtr,
+        addForeignPtrFinalizer,
   ) where
 
 #ifdef __GLASGOW_HASKELL__
-import GHC.IOBase      ( IO )
-import GHC.Ptr         ( Ptr )
-import GHC.ForeignPtr  ( ForeignPtr )
+import GHC.IO           ( IO )
+import GHC.Ptr          ( Ptr )
+import GHC.ForeignPtr   ( ForeignPtr )
 import qualified GHC.ForeignPtr
 #endif
 
@@ -39,10 +40,9 @@ newForeignPtr :: Ptr a -> IO () -> IO (ForeignPtr a)
 -- ^Turns a plain memory reference into a foreign object by associating
 -- a finalizer - given by the monadic operation - with the reference.
 -- The finalizer will be executed after the last reference to the
--- foreign object is dropped.  Note that there is no guarantee on how
--- soon the finalizer is executed after the last reference was dropped;
--- this depends on the details of the Haskell storage manager.  The only
--- guarantee is that the finalizer runs before the program terminates.
+-- foreign object is dropped.  There is no guarantee of promptness, and
+-- in fact there is no guarantee that the finalizer will eventually
+-- run at all.
 newForeignPtr = GHC.ForeignPtr.newConcForeignPtr
 
 addForeignPtrFinalizer :: ForeignPtr a -> IO () -> IO ()