Foreign.Concurrent

Copyright (c) The University of Glasgow 2003
License BSD-style (see the file libraries/base/LICENSE)
Maintainer [email protected]
Stability provisional
Portability non-portable (requires concurrency)
Safe Haskell Trustworthy
Language Haskell2010

Description

FFI datatypes and operations that use or require concurrency (GHC only).

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.

newForeignPtr :: Ptr a -> IO () -> IO (ForeignPtr a) Source

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. There is no guarantee of promptness, and in fact there is no guarantee that the finalizer will eventually run at all.

addForeignPtrFinalizer :: ForeignPtr a -> IO () -> IO () Source

This function adds a finalizer to the given ForeignPtr. The finalizer will run after the last reference to the foreign object is dropped, but before all previously registered finalizers for the same object.

© The University of Glasgow and others
Licensed under a BSD-style license (see top of the page).
https://downloads.haskell.org/~ghc/7.10.3/docs/html/libraries/base-4.8.2.0/Foreign-Concurrent.html