Package ch.bailu.gtk.glib
Klasse StaticMutex
java.lang.Object
ch.bailu.gtk.type.Type
ch.bailu.gtk.type.Pointer
ch.bailu.gtk.type.Record
ch.bailu.gtk.glib.StaticMutex
- Alle implementierten Schnittstellen:
PointerInterface
A #GStaticMutex works like a #GMutex.
Prior to GLib 2.32, GStaticMutex had the significant advantage
that it doesn't need to be created at run-time, but can be defined
at compile-time. Since 2.32, #GMutex can be statically allocated
as well, and GStaticMutex has been deprecated.
Here is a version of our give_me_next_number() example using
a GStaticMutex:
Sometimes you would like to dynamically create a mutex. If you don't
want to require prior calling to g_thread_init(), because your code
should also be usable in non-threaded programs, you are not able to
use g_mutex_new() and thus #GMutex, as that requires a prior call to
g_thread_init(). In these cases you can also use a #GStaticMutex.
It must be initialized with g_static_mutex_init() before using it
and freed with with g_static_mutex_free() when not needed anymore to
free up any allocated resources.
Even though #GStaticMutex is not opaque, it should only be used with
the following functions, as it is defined differently on different
platforms.
All of the g_static_mutex_* functions apart from
g_static_mutex_get_mutex() can also be used even if g_thread_init()
has not yet been called. Then they do nothing, apart from
g_static_mutex_trylock() which does nothing but returning %TRUE.
All of the g_static_mutex_* functions are actually macros. Apart from
taking their addresses, you can however use them as if they were
functions.
Prior to GLib 2.32, GStaticMutex had the significant advantage
that it doesn't need to be created at run-time, but can be defined
at compile-time. Since 2.32, #GMutex can be statically allocated
as well, and GStaticMutex has been deprecated.
Here is a version of our give_me_next_number() example using
a GStaticMutex:
int give_me_next_number (void) { static int current_number = 0; int ret_val; static GStaticMutex mutex = G_STATIC_MUTEX_INIT; g_static_mutex_lock (&mutex); ret_val = current_number = calc_next_number (current_number); g_static_mutex_unlock (&mutex); return ret_val; }
Sometimes you would like to dynamically create a mutex. If you don't
want to require prior calling to g_thread_init(), because your code
should also be usable in non-threaded programs, you are not able to
use g_mutex_new() and thus #GMutex, as that requires a prior call to
g_thread_init(). In these cases you can also use a #GStaticMutex.
It must be initialized with g_static_mutex_init() before using it
and freed with with g_static_mutex_free() when not needed anymore to
free up any allocated resources.
Even though #GStaticMutex is not opaque, it should only be used with
the following functions, as it is defined differently on different
platforms.
All of the g_static_mutex_* functions apart from
g_static_mutex_get_mutex() can also be used even if g_thread_init()
has not yet been called. Then they do nothing, apart from
g_static_mutex_trylock() which does nothing but returning %TRUE.
All of the g_static_mutex_* functions are actually macros. Apart from
taking their addresses, you can however use them as if they were
functions.
-
Feldübersicht
Felder -
Konstruktorübersicht
Konstruktoren -
Methodenübersicht
Modifizierer und TypMethodeBeschreibungvoid
free()
Veraltet.static ClassHandler
void
init()
Veraltet.void
setFieldMutex
(Mutex mutex) Von Klasse geerbte Methoden ch.bailu.gtk.type.Pointer
asCPointer, cast, connectSignal, disconnectSignals, disconnectSignals, equals, hashCode, throwIfNull, throwNullPointerException, toString, unregisterCallbacks, unregisterCallbacks
Von Klasse geerbte Methoden ch.bailu.gtk.type.Type
asCPointer, asCPointer, asCPointerNotNull, asJnaPointer, asJnaPointer, asPointer, asPointer, cast, cast, throwIfNull
Von Klasse geerbte Methoden java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
Von Schnittstelle geerbte Methoden ch.bailu.gtk.type.PointerInterface
asCPointerNotNull, asJnaPointer, asPointer, isNotNull, isNull
-
Felddetails
-
Konstruktordetails
-
Methodendetails
-
getClassHandler
-
setFieldMutex
-
getFieldMutex
-
free
Veraltet.Releases all resources allocated to @mutex.
You don't have to call this functions for a #GStaticMutex with an
unbounded lifetime, i.e. objects declared 'static', but if you have
a #GStaticMutex as a member of a structure and the structure is
freed, you should also free the #GStaticMutex.
Calling g_static_mutex_free() on a locked mutex may result in
undefined behaviour. -
getMutexImpl
- Gibt zurück:
-
init
Veraltet.Initializes @mutex.
Alternatively you can initialize it with %G_STATIC_MUTEX_INIT.
-