Github User Fetcher 1.0.0
C Application with Server and GUI
|
Go to the source code of this file.
Data Structures | |
union | _GMutex |
struct | _GRWLock |
struct | _GCond |
struct | _GRecMutex |
struct | _GPrivate |
struct | _GOnce |
Macros | |
#define | G_THREAD_ERROR g_thread_error_quark () |
#define | G_PRIVATE_INIT(notify) { NULL, (notify), { NULL, NULL } } |
#define | G_ONCE_INIT { G_ONCE_STATUS_NOTCALLED, NULL } |
#define | G_LOCK_NAME(name) g__ ## name ## _lock |
#define | G_LOCK_DEFINE_STATIC(name) static G_LOCK_DEFINE (name) |
#define | G_LOCK_DEFINE(name) GMutex G_LOCK_NAME (name) |
#define | G_LOCK_EXTERN(name) extern GMutex G_LOCK_NAME (name) |
#define | G_LOCK(name) g_mutex_lock (&G_LOCK_NAME (name)) |
#define | G_UNLOCK(name) g_mutex_unlock (&G_LOCK_NAME (name)) |
#define | G_TRYLOCK(name) g_mutex_trylock (&G_LOCK_NAME (name)) |
#define | g_once(once, func, arg) g_once_impl ((once), (func), (arg)) |
#define | g_once_init_enter(location) (g_once_init_enter((location))) |
#define | g_once_init_leave(location, result) (g_once_init_leave((location), (gsize) (result))) |
#define | g_once_init_enter_pointer(location) |
#define | g_once_init_leave_pointer(location, result) |
Typedefs | |
typedef gpointer(* | GThreadFunc) (gpointer data) |
typedef struct _GThread | GThread |
typedef union _GMutex | GMutex |
typedef struct _GRecMutex | GRecMutex |
typedef struct _GRWLock | GRWLock |
typedef struct _GCond | GCond |
typedef struct _GPrivate | GPrivate |
typedef struct _GOnce | GOnce |
typedef void | GMutexLocker |
typedef void | GRecMutexLocker |
typedef void | GRWLockWriterLocker |
typedef void | GRWLockReaderLocker |
Enumerations | |
enum | GThreadError { G_THREAD_ERROR_AGAIN } |
enum | GOnceStatus { G_ONCE_STATUS_NOTCALLED , G_ONCE_STATUS_PROGRESS , G_ONCE_STATUS_READY } |
#define G_LOCK | ( | name | ) | g_mutex_lock (&G_LOCK_NAME (name)) |
Definition at line 137 of file gthread.h.
Referenced by g_object_notify_queue_add(), g_object_notify_queue_clear(), g_object_notify_queue_freeze(), and g_object_notify_queue_thaw().
#define G_LOCK_DEFINE_STATIC | ( | name | ) | static G_LOCK_DEFINE (name) |
#define G_LOCK_EXTERN | ( | name | ) | extern GMutex G_LOCK_NAME (name) |
#define g_once | ( | once, | |
func, | |||
arg ) g_once_impl ((once), (func), (arg)) |
#define G_ONCE_INIT { G_ONCE_STATUS_NOTCALLED, NULL } |
#define g_once_init_enter | ( | location | ) | (g_once_init_enter((location))) |
#define g_once_init_enter_pointer | ( | location | ) |
Definition at line 299 of file gthread.h.
#define g_once_init_leave | ( | location, | |
result ) (g_once_init_leave((location), (gsize) (result))) |
#define g_once_init_leave_pointer | ( | location, | |
result ) |
Definition at line 302 of file gthread.h.
#define G_THREAD_ERROR g_thread_error_quark () |
#define G_TRYLOCK | ( | name | ) | g_mutex_trylock (&G_LOCK_NAME (name)) |
#define G_UNLOCK | ( | name | ) | g_mutex_unlock (&G_LOCK_NAME (name)) |
Definition at line 138 of file gthread.h.
Referenced by g_object_notify_queue_add(), g_object_notify_queue_clear(), g_object_notify_queue_freeze(), and g_object_notify_queue_thaw().
typedef void GMutexLocker |
GMutexLocker:
Opaque type. See g_mutex_locker_new() for details. Since: 2.44
typedef struct _GRecMutex GRecMutex |
typedef void GRecMutexLocker |
GRecMutexLocker:
Opaque type. See g_rec_mutex_locker_new() for details. Since: 2.60
typedef void GRWLockReaderLocker |
GRWLockReaderLocker:
Opaque type. See g_rw_lock_reader_locker_new() for details. Since: 2.62
typedef void GRWLockWriterLocker |
GRWLockWriterLocker:
Opaque type. See g_rw_lock_writer_locker_new() for details. Since: 2.62
enum GOnceStatus |
Enumerator | |
---|---|
G_ONCE_STATUS_NOTCALLED | |
G_ONCE_STATUS_PROGRESS | |
G_ONCE_STATUS_READY |
Definition at line 97 of file gthread.h.
enum GThreadError |
GLIB_AVAILABLE_IN_ALL void g_cond_broadcast | ( | GCond * | cond | ) |
GLIB_AVAILABLE_IN_2_32 void g_cond_clear | ( | GCond * | cond | ) |
GLIB_AVAILABLE_IN_2_32 void g_cond_init | ( | GCond * | cond | ) |
GLIB_AVAILABLE_IN_ALL void g_cond_signal | ( | GCond * | cond | ) |
GLIB_AVAILABLE_IN_ALL void g_cond_wait | ( | GCond * | cond, |
GMutex * | mutex ) |
GLIB_AVAILABLE_IN_2_32 gboolean g_cond_wait_until | ( | GCond * | cond, |
GMutex * | mutex, | ||
gint64 | end_time ) |
GLIB_AVAILABLE_IN_2_36 guint g_get_num_processors | ( | void | ) |
GLIB_AVAILABLE_IN_2_32 void g_mutex_clear | ( | GMutex * | mutex | ) |
GLIB_AVAILABLE_IN_2_32 void g_mutex_init | ( | GMutex * | mutex | ) |
GLIB_AVAILABLE_IN_ALL void g_mutex_lock | ( | GMutex * | mutex | ) |
Referenced by g_mutex_locker_new().
|
inlinestatic |
g_mutex_locker_free: @locker: a GMutexLocker
Unlock @locker's mutex. See g_mutex_locker_new() for details.
No memory is freed, it is equivalent to a g_mutex_unlock() call.
Since: 2.44
Definition at line 384 of file gthread.h.
References g_mutex_unlock().
|
inlinestatic |
g_mutex_locker_new: @mutex: a mutex to lock
Lock @mutex and return a new GMutexLocker. Unlock with g_mutex_locker_free(). Using g_mutex_unlock() on @mutex while a GMutexLocker exists can lead to undefined behaviour.
No allocation is performed, it is equivalent to a g_mutex_lock() call.
This is intended to be used with g_autoptr(). Note that g_autoptr() is only available when using GCC or clang, so the following example will only work with those compilers: |[ typedef struct { ... GMutex mutex; ... } MyObject;
static void my_object_do_stuff (MyObject *self) { g_autoptr(GMutexLocker) locker = g_mutex_locker_new (&self->mutex);
// Code with mutex locked here
if (condition) // No need to unlock return;
// Optionally early unlock g_clear_pointer (&locker, g_mutex_locker_free);
// Code with mutex unlocked here } ]|
Note that it is common for the declared variable to not be used in the scope, which causes some compilers to warn. That can be avoided by using G_GNUC_UNUSED
or, since 2.80, [func@.nosp@m.GLib.nosp@m..MUTE.nosp@m.X_AU.nosp@m.TO_LO.nosp@m.CK].
Returns: a GMutexLocker Since: 2.44
Definition at line 366 of file gthread.h.
References g_mutex_lock(), and mutex.
GLIB_AVAILABLE_IN_ALL gboolean g_mutex_trylock | ( | GMutex * | mutex | ) |
GLIB_AVAILABLE_IN_ALL void g_mutex_unlock | ( | GMutex * | mutex | ) |
Referenced by g_mutex_locker_free().
GLIB_AVAILABLE_IN_ALL gpointer g_once_impl | ( | GOnce * | once, |
GThreadFunc | func, | ||
gpointer | arg ) |
GLIB_AVAILABLE_IN_ALL gboolean g_once_init_enter | ( | volatile void * | location | ) |
GLIB_AVAILABLE_IN_2_80 gboolean g_once_init_enter_pointer | ( | void * | location | ) |
GLIB_AVAILABLE_IN_ALL void g_once_init_leave | ( | volatile void * | location, |
gsize | result ) |
GLIB_AVAILABLE_IN_2_80 void g_once_init_leave_pointer | ( | void * | location, |
gpointer | result ) |
GLIB_AVAILABLE_IN_ALL gpointer g_private_get | ( | GPrivate * | key | ) |
GLIB_AVAILABLE_IN_2_32 void g_private_replace | ( | GPrivate * | key, |
gpointer | value ) |
GLIB_AVAILABLE_IN_ALL void g_private_set | ( | GPrivate * | key, |
gpointer | value ) |
GLIB_AVAILABLE_IN_2_32 void g_rec_mutex_clear | ( | GRecMutex * | rec_mutex | ) |
GLIB_AVAILABLE_IN_2_32 void g_rec_mutex_init | ( | GRecMutex * | rec_mutex | ) |
GLIB_AVAILABLE_IN_2_32 void g_rec_mutex_lock | ( | GRecMutex * | rec_mutex | ) |
Referenced by g_rec_mutex_locker_new().
|
inlinestatic |
g_rec_mutex_locker_free: @locker: a GRecMutexLocker
Unlock @locker's recursive mutex. See g_rec_mutex_locker_new() for details.
No memory is freed, it is equivalent to a g_rec_mutex_unlock() call.
Since: 2.60
Definition at line 509 of file gthread.h.
References g_rec_mutex_unlock().
|
inlinestatic |
g_rec_mutex_locker_new: @rec_mutex: a recursive mutex to lock
Lock @rec_mutex and return a new GRecMutexLocker. Unlock with g_rec_mutex_locker_free(). Using g_rec_mutex_unlock() on @rec_mutex while a GRecMutexLocker exists can lead to undefined behaviour.
No allocation is performed, it is equivalent to a g_rec_mutex_lock() call.
This is intended to be used with g_autoptr(). Note that g_autoptr() is only available when using GCC or clang, so the following example will only work with those compilers: |[ typedef struct { ... GRecMutex rec_mutex; ... } MyObject;
static void my_object_do_stuff (MyObject *self) { g_autoptr(GRecMutexLocker) locker = g_rec_mutex_locker_new (&self->rec_mutex);
// Code with rec_mutex locked here
if (condition) // No need to unlock return;
// Optionally early unlock g_clear_pointer (&locker, g_rec_mutex_locker_free);
// Code with rec_mutex unlocked here } ]|
Note that it is common for the declared variable to not be used in the scope, which causes some compilers to warn. That can be avoided by using G_GNUC_UNUSED
or, since 2.80, [func@.nosp@m.GLib.nosp@m..REC_.nosp@m.MUTE.nosp@m.X_AUT.nosp@m.O_LO.nosp@m.CK].
Returns: a GRecMutexLocker Since: 2.60
Definition at line 489 of file gthread.h.
References g_rec_mutex_lock().
GLIB_AVAILABLE_IN_2_32 gboolean g_rec_mutex_trylock | ( | GRecMutex * | rec_mutex | ) |
GLIB_AVAILABLE_IN_2_32 void g_rec_mutex_unlock | ( | GRecMutex * | rec_mutex | ) |
Referenced by g_rec_mutex_locker_free().
GLIB_AVAILABLE_IN_2_32 void g_rw_lock_clear | ( | GRWLock * | rw_lock | ) |
GLIB_AVAILABLE_IN_2_32 void g_rw_lock_init | ( | GRWLock * | rw_lock | ) |
GLIB_AVAILABLE_IN_2_32 void g_rw_lock_reader_lock | ( | GRWLock * | rw_lock | ) |
Referenced by g_rw_lock_reader_locker_new().
|
inlinestatic |
g_rw_lock_reader_locker_free: @locker: a GRWLockReaderLocker
Release a read lock on @locker's read-write lock. See g_rw_lock_reader_locker_new() for details.
No memory is freed, it is equivalent to a g_rw_lock_reader_unlock() call.
Since: 2.62
Definition at line 765 of file gthread.h.
References g_rw_lock_reader_unlock().
|
inlinestatic |
g_rw_lock_reader_locker_new: @rw_lock: a GRWLock
Obtain a read lock on @rw_lock and return a new GRWLockReaderLocker. Unlock with g_rw_lock_reader_locker_free(). Using g_rw_lock_reader_unlock() on @rw_lock while a GRWLockReaderLocker exists can lead to undefined behaviour.
No allocation is performed, it is equivalent to a g_rw_lock_reader_lock() call.
This is intended to be used with g_autoptr(). For a code sample, see g_rw_lock_writer_locker_new().
Returns: a GRWLockReaderLocker Since: 2.62
Definition at line 744 of file gthread.h.
References g_rw_lock_reader_lock().
GLIB_AVAILABLE_IN_2_32 gboolean g_rw_lock_reader_trylock | ( | GRWLock * | rw_lock | ) |
GLIB_AVAILABLE_IN_2_32 void g_rw_lock_reader_unlock | ( | GRWLock * | rw_lock | ) |
Referenced by g_rw_lock_reader_locker_free().
GLIB_AVAILABLE_IN_2_32 void g_rw_lock_writer_lock | ( | GRWLock * | rw_lock | ) |
Referenced by g_rw_lock_writer_locker_new().
|
inlinestatic |
g_rw_lock_writer_locker_free: @locker: a GRWLockWriterLocker
Release a write lock on @locker's read-write lock. See g_rw_lock_writer_locker_new() for details.
No memory is freed, it is equivalent to a g_rw_lock_writer_unlock() call.
Since: 2.62
Definition at line 667 of file gthread.h.
References g_rw_lock_writer_unlock().
|
inlinestatic |
g_rw_lock_writer_locker_new: @rw_lock: a GRWLock
Obtain a write lock on @rw_lock and return a new GRWLockWriterLocker. Unlock with g_rw_lock_writer_locker_free(). Using g_rw_lock_writer_unlock() on @rw_lock while a GRWLockWriterLocker exists can lead to undefined behaviour.
No allocation is performed, it is equivalent to a g_rw_lock_writer_lock() call.
This is intended to be used with g_autoptr(). Note that g_autoptr() is only available when using GCC or clang, so the following example will only work with those compilers: |[ typedef struct { ... GRWLock rw_lock; GPtrArray *array; ... } MyObject;
static gchar * my_object_get_data (MyObject *self, guint index) { g_autoptr(GRWLockReaderLocker) locker = g_rw_lock_reader_locker_new (&self->rw_lock);
// Code with a read lock obtained on rw_lock here
if (self->array == NULL) // No need to unlock return NULL;
if (index < self->array->len) // No need to unlock return g_ptr_array_index (self->array, index);
// Optionally early unlock g_clear_pointer (&locker, g_rw_lock_reader_locker_free);
// Code with rw_lock unlocked here return NULL; }
static void my_object_set_data (MyObject *self, guint index, gpointer data) { g_autoptr(GRWLockWriterLocker) locker = g_rw_lock_writer_locker_new (&self->rw_lock);
// Code with a write lock obtained on rw_lock here
if (self->array == NULL) self->array = g_ptr_array_new ();
if (condition) // No need to unlock return;
if (index >= self->array->len) g_ptr_array_set_size (self->array, index+1); g_ptr_array_index (self->array, index) = data;
// Optionally early unlock g_clear_pointer (&locker, g_rw_lock_writer_locker_free);
// Code with rw_lock unlocked here } ]|
Note that it is common for the declared variable to not be used in the scope, which causes some compilers to warn. That can be avoided by using G_GNUC_UNUSED
or, since 2.80, [func@.nosp@m.GLib.nosp@m..RW_L.nosp@m.OCK_.nosp@m.WRITE.nosp@m.R_AU.nosp@m.TO_LO.nosp@m.CK].
Returns: a GRWLockWriterLocker Since: 2.62
Definition at line 646 of file gthread.h.
References g_rw_lock_writer_lock().
GLIB_AVAILABLE_IN_2_32 gboolean g_rw_lock_writer_trylock | ( | GRWLock * | rw_lock | ) |
GLIB_AVAILABLE_IN_2_32 void g_rw_lock_writer_unlock | ( | GRWLock * | rw_lock | ) |
Referenced by g_rw_lock_writer_locker_free().
GLIB_AVAILABLE_IN_ALL GQuark g_thread_error_quark | ( | void | ) |
G_NORETURN GLIB_AVAILABLE_IN_ALL void g_thread_exit | ( | gpointer | retval | ) |
GLIB_AVAILABLE_IN_ALL gpointer g_thread_join | ( | GThread * | thread | ) |
GLIB_AVAILABLE_IN_2_32 GThread * g_thread_new | ( | const gchar * | name, |
GThreadFunc | func, | ||
gpointer | data ) |
GLIB_AVAILABLE_IN_2_32 GThread * g_thread_ref | ( | GThread * | thread | ) |
GLIB_AVAILABLE_IN_ALL GThread * g_thread_self | ( | void | ) |
GLIB_AVAILABLE_IN_2_32 GThread * g_thread_try_new | ( | const gchar * | name, |
GThreadFunc | func, | ||
gpointer | data, | ||
GError ** | error ) |
GLIB_AVAILABLE_IN_2_32 void g_thread_unref | ( | GThread * | thread | ) |
GLIB_AVAILABLE_IN_ALL void g_thread_yield | ( | void | ) |