Package org.gnome.glib
Class Mutex
java.lang.Object
io.github.jwharm.javagi.base.ProxyInstance
org.gnome.glib.Mutex
- All Implemented Interfaces:
Proxy
The
GMutex
struct is an opaque data structure to represent a mutex
(mutual exclusion). It can be used to protect data against shared
access.
Take for example the following function:
int
give_me_next_number (void)
{
static int current_number = 0;
// now do a very complicated calculation to calculate the new
// number, this might for example be a random number generator
current_number = calc_next_number (current_number);
return current_number;
}
It is easy to see that this won't work in a multi-threaded
application. There current_number must be protected against shared
access. A GMutex
can be used as a solution to this problem:
int
give_me_next_number (void)
{
static GMutex mutex;
static int current_number = 0;
int ret_val;
g_mutex_lock (&mutex);
ret_val = current_number = calc_next_number (current_number);
g_mutex_unlock (&mutex);
return ret_val;
}
Notice that the GMutex
is not initialised to any particular value.
Its placement in static storage ensures that it will be initialised
to all-zeros, which is appropriate.
If a GMutex
is placed in other contexts (eg: embedded in a struct)
then it must be explicitly initialised using g_mutex_init().
A GMutex
should only be accessed via g_mutex_ functions.
-
Constructor Summary
ConstructorDescriptionAllocate a new Mutex.Mutex
(MemorySegment address) Create a Mutex proxy instance for the provided memory address. -
Method Summary
Modifier and TypeMethodDescriptionstatic MemoryLayout
The memory layout of the native struct.static Mutex
new_()
Deprecated.GMutex can now be statically allocated, or embedded in structures and initialised with g_mutex_init().Methods inherited from class io.github.jwharm.javagi.base.ProxyInstance
equals, handle, hashCode
-
Constructor Details
-
Mutex
Create a Mutex proxy instance for the provided memory address.- Parameters:
address
- the memory address of the native object
-
Mutex
Allocate a new Mutex.- Parameters:
arena
- to control the memory allocation scope
-
-
Method Details
-
getMemoryLayout
The memory layout of the native struct.- Returns:
- the memory layout
-
new_
Deprecated.GMutex can now be statically allocated, or embedded in structures and initialised with g_mutex_init().Allocates and initializes a newGMutex
.- Returns:
- a newly allocated
GMutex
. Use g_mutex_free() to free
-