Copyright | (C) 2014 I/O Tweag |
---|---|
License | see libraries/base/LICENSE |
Maintainer | [email protected] |
Stability | internal |
Portability | non-portable (GHC Extensions) |
Safe Haskell | None |
Language | Haskell2010 |
Symbolic references to values.
References to values are usually implemented with memory addresses, and this is practical when communicating values between the different pieces of a single process.
When values are communicated across different processes running in possibly different machines, though, addresses are no longer useful since each process may use different addresses to store a given value.
To solve such concern, the references provided by this module offer a key that can be used to locate the values on each process. Each process maintains a global table of references which can be looked up with a given key. This table is known as the Static Pointer Table. The reference can then be dereferenced to obtain the value.
The various communicating processes need to aggree on the keys used to refer to the values in the Static Pointer Table, or lookups will fail. Only processes launched from the same program binary are guaranteed to use the same set of keys.
A reference to a value of type a
.
IsStatic StaticPtr | Since: base-4.9.0.0 |
Defined in GHC.StaticPtr MethodsfromStaticPtr :: StaticPtr a -> StaticPtr a Source |
deRefStaticPtr :: StaticPtr a -> a Source
Dereferences a static pointer.
type StaticKey = Fingerprint Source
A key for StaticPtrs
that can be serialized and used with unsafeLookupStaticPtr
.
staticKey :: StaticPtr a -> StaticKey Source
The StaticKey
that can be used to look up the given StaticPtr
.
unsafeLookupStaticPtr :: StaticKey -> IO (Maybe (StaticPtr a)) Source
Looks up a StaticPtr
by its StaticKey
.
If the StaticPtr
is not found returns Nothing
.
This function is unsafe because the program behavior is undefined if the type of the returned StaticPtr
does not match the expected one.
data StaticPtrInfo Source
Miscelaneous information available for debugging purposes.
StaticPtrInfo | |
Fields
|
Show StaticPtrInfo | Since: base-4.8.0.0 |
Defined in GHC.StaticPtr MethodsshowsPrec :: Int -> StaticPtrInfo -> ShowS Source show :: StaticPtrInfo -> String Source showList :: [StaticPtrInfo] -> ShowS Source |
staticPtrInfo :: StaticPtr a -> StaticPtrInfo Source
StaticPtrInfo
of the given StaticPtr
.
staticPtrKeys :: IO [StaticKey] Source
A list of all known keys.
A class for things buildable from static pointers.
fromStaticPtr :: StaticPtr a -> p a Source
IsStatic StaticPtr | Since: base-4.9.0.0 |
Defined in GHC.StaticPtr MethodsfromStaticPtr :: StaticPtr a -> StaticPtr a Source |
© The University of Glasgow and others
Licensed under a BSD-style license (see top of the page).
https://downloads.haskell.org/~ghc/8.6.1/docs/html/libraries/base-4.12.0.0/GHC-StaticPtr.html