fix the docs regarding finalizer guarantees
authorSimon Marlow <marlowsd@gmail.com>
Mon, 30 Nov 2009 14:44:09 +0000 (14:44 +0000)
committerSimon Marlow <marlowsd@gmail.com>
Mon, 30 Nov 2009 14:44:09 +0000 (14:44 +0000)
Foreign/Concurrent.hs
Foreign/ForeignPtr.hs

index a09c06f..a914d95 100644 (file)
@@ -39,10 +39,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 ()
index 7fe096e..6a7458a 100644 (file)
@@ -101,13 +101,10 @@ instance Show (ForeignPtr a) where
 #ifndef __NHC__
 newForeignPtr :: FinalizerPtr a -> Ptr a -> IO (ForeignPtr a)
 -- ^Turns a plain memory reference into a foreign pointer, and
--- associates a finaliser with the reference.  The finaliser will be executed
--- after the last reference to the foreign object is dropped.  Note that there
--- is no guarantee on how soon the finaliser is executed after the last
--- reference was dropped; this depends on the details of the Haskell storage
--- manager.  Indeed, there is no guarantee that the finalizer is executed at
--- all; a program may exit with finalizers outstanding.  (This is true
--- of GHC, other implementations may give stronger guarantees).
+-- associates a finaliser with the reference.  The finaliser will be
+-- executed after the last reference to the foreign object is dropped.
+-- There is no guarantee of promptness, however the finalizer will be
+-- executed before the program exits.
 newForeignPtr finalizer p
   = do fObj <- newForeignPtr_ p
        addForeignPtrFinalizer finalizer fObj