| Copyright | Will Thompson, Iñaki García Etxebarria and Jonas Platte |
|---|---|
| License | LGPL-2.1 |
| Maintainer | Iñaki García Etxebarria (garetxe@gmail.com) |
| Safe Haskell | None |
| Language | Haskell2010 |
GI.GLib.Structs.Once
Description
- newtype Once = Once (ManagedPtr Once)
- newZeroOnce :: MonadIO m => m Once
- noOnce :: Maybe Once
- onceInitEnter :: (HasCallStack, MonadIO m) => Ptr () -> m Bool
- onceInitLeave :: (HasCallStack, MonadIO m) => Ptr () -> Word64 -> m ()
- clearOnceRetval :: MonadIO m => Once -> m ()
- getOnceRetval :: MonadIO m => Once -> m (Ptr ())
- once_retval :: AttrLabelProxy "retval"
- setOnceRetval :: MonadIO m => Once -> Ptr () -> m ()
- getOnceStatus :: MonadIO m => Once -> m OnceStatus
- once_status :: AttrLabelProxy "status"
- setOnceStatus :: MonadIO m => Once -> OnceStatus -> m ()
Exported types
Constructors
| Once (ManagedPtr Once) |
Instances
| WrappedPtr Once Source # | |
| (~) AttrOpTag tag AttrSet => Constructible Once tag Source # | |
| ((~) * info (ResolveOnceMethod t Once), MethodInfo * info Once p) => IsLabel t (Once -> p) Source # | |
| ((~) * info (ResolveOnceMethod t Once), MethodInfo * info Once p) => IsLabelProxy t (Once -> p) Source # | |
| HasAttributeList * Once Source # | |
| type AttributeList Once Source # | |
Methods
initEnter
Arguments
| :: (HasCallStack, MonadIO m) | |
| => Ptr () |
|
| -> m Bool | Returns: |
Function to be called when starting a critical initialization
section. The argument location must point to a static
0-initialized variable that will be set to a value other than 0 at
the end of the initialization section. In combination with
onceInitLeave and the unique address valueLocation, it can
be ensured that an initialization section will be executed only once
during a program's life time, and that concurrent threads are
blocked until initialization completed. To be used in constructs
like this:
C code
static gsize initialization_value = 0;
if (g_once_init_enter (&initialization_value))
{
gsize setup_value = 42; // initialization code here
g_once_init_leave (&initialization_value, setup_value);
}
// use initialization_value hereSince: 2.14
initLeave
Arguments
| :: (HasCallStack, MonadIO m) | |
| => Ptr () |
|
| -> Word64 |
|
| -> m () |
Counterpart to onceInitEnter. Expects a location of a static
0-initialized initialization variable, and an initialization value
other than 0. Sets the variable to the initialization value, and
releases concurrent threads blocking in onceInitEnter on this
initialization variable.
Since: 2.14
Properties
retval
clearOnceRetval :: MonadIO m => Once -> m () Source #
once_retval :: AttrLabelProxy "retval" Source #
status
getOnceStatus :: MonadIO m => Once -> m OnceStatus Source #
once_status :: AttrLabelProxy "status" Source #
setOnceStatus :: MonadIO m => Once -> OnceStatus -> m () Source #