diff options
author | Simon Marlow <marlowsd@gmail.com> | 2009-11-30 14:44:09 +0000 |
---|---|---|
committer | Simon Marlow <marlowsd@gmail.com> | 2009-11-30 14:44:09 +0000 |
commit | 8c44eaba6f9224b16dc8556f0595e0ce71897cbb (patch) | |
tree | 4efc66c9a1d8fef7e4f65458c54cb190648196df /libraries/base/Foreign | |
parent | 0e0130b74f36a2571fed5123c853163ca01ad7ae (diff) | |
download | haskell-8c44eaba6f9224b16dc8556f0595e0ce71897cbb.tar.gz |
fix the docs regarding finalizer guarantees
Diffstat (limited to 'libraries/base/Foreign')
-rw-r--r-- | libraries/base/Foreign/Concurrent.hs | 7 | ||||
-rw-r--r-- | libraries/base/Foreign/ForeignPtr.hs | 11 |
2 files changed, 7 insertions, 11 deletions
diff --git a/libraries/base/Foreign/Concurrent.hs b/libraries/base/Foreign/Concurrent.hs index a09c06f0c2..a914d9532f 100644 --- a/libraries/base/Foreign/Concurrent.hs +++ b/libraries/base/Foreign/Concurrent.hs @@ -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 () diff --git a/libraries/base/Foreign/ForeignPtr.hs b/libraries/base/Foreign/ForeignPtr.hs index 7fe096e9a8..6a7458ac6e 100644 --- a/libraries/base/Foreign/ForeignPtr.hs +++ b/libraries/base/Foreign/ForeignPtr.hs @@ -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 |