<!-- ##### SECTION Title ##### -->
Threads

<!-- ##### SECTION Short_Description ##### -->


<!-- ##### SECTION Long_Description ##### -->
<para>

</para>

<!-- ##### SECTION See_Also ##### -->
<para>

</para>

<!-- ##### SECTION Stability_Level ##### -->


<!-- ##### SECTION Image ##### -->


<!-- ##### MACRO G_THREAD_ERROR ##### -->
<para>

</para>



<!-- ##### ENUM GThreadError ##### -->
<para>

</para>

@G_THREAD_ERROR_AGAIN: 

<!-- ##### STRUCT GThread ##### -->
<para>

</para>


<!-- ##### USER_FUNCTION GThreadFunc ##### -->
<para>

</para>

@data: 
@Returns: 


<!-- ##### FUNCTION g_thread_new ##### -->
<para>

</para>

@name: 
@func: 
@data: 
@Returns: 


<!-- ##### FUNCTION g_thread_try_new ##### -->
<para>

</para>

@name: 
@func: 
@data: 
@error: 
@Returns: 


<!-- ##### FUNCTION g_thread_ref ##### -->
<para>

</para>

@thread: 
@Returns: 


<!-- ##### FUNCTION g_thread_unref ##### -->
<para>

</para>

@thread: 


<!-- ##### FUNCTION g_thread_join ##### -->
<para>

</para>

@thread: 
@Returns: 


<!-- ##### FUNCTION g_thread_yield ##### -->
<para>

</para>



<!-- ##### FUNCTION g_thread_exit ##### -->
<para>

</para>

@retval: 


<!-- ##### FUNCTION g_thread_self ##### -->
<para>

</para>

@void: 
@Returns: 


<!-- ##### UNION GMutex ##### -->
<para>

</para>


<!-- ##### FUNCTION g_mutex_init ##### -->
<para>

</para>

@mutex: 


<!-- ##### FUNCTION g_mutex_clear ##### -->
<para>

</para>

@mutex: 


<!-- ##### FUNCTION g_mutex_lock ##### -->
<para>

</para>

@mutex: 


<!-- ##### FUNCTION g_mutex_trylock ##### -->
<para>

</para>

@mutex: 
@Returns: 


<!-- ##### FUNCTION g_mutex_unlock ##### -->
<para>

</para>

@mutex: 


<!-- ##### MACRO G_LOCK_DEFINE ##### -->
<para>

</para>

@name: 


<!-- ##### MACRO G_LOCK_DEFINE_STATIC ##### -->
<para>

</para>

@name: 


<!-- ##### MACRO G_LOCK_EXTERN ##### -->
<para>

</para>

@name: 


<!-- ##### MACRO G_LOCK ##### -->
<para>

</para>

@name: 


<!-- ##### MACRO G_TRYLOCK ##### -->
<para>

</para>

@name: 


<!-- ##### MACRO G_UNLOCK ##### -->
<para>

</para>

@name: 


<!-- ##### STRUCT GRecMutex ##### -->
<para>

</para>


<!-- ##### FUNCTION g_rec_mutex_init ##### -->
<para>

</para>

@rec_mutex: 


<!-- ##### FUNCTION g_rec_mutex_clear ##### -->
<para>

</para>

@rec_mutex: 


<!-- ##### FUNCTION g_rec_mutex_lock ##### -->
<para>

</para>

@rec_mutex: 


<!-- ##### FUNCTION g_rec_mutex_trylock ##### -->
<para>

</para>

@rec_mutex: 
@Returns: 


<!-- ##### FUNCTION g_rec_mutex_unlock ##### -->
<para>

</para>

@rec_mutex: 


<!-- ##### STRUCT GRWLock ##### -->
<para>

</para>


<!-- ##### FUNCTION g_rw_lock_init ##### -->
<para>

</para>

@rw_lock: 


<!-- ##### FUNCTION g_rw_lock_clear ##### -->
<para>

</para>

@rw_lock: 


<!-- ##### FUNCTION g_rw_lock_writer_lock ##### -->
<para>

</para>

@rw_lock: 


<!-- ##### FUNCTION g_rw_lock_writer_trylock ##### -->
<para>

</para>

@rw_lock: 
@Returns: 


<!-- ##### FUNCTION g_rw_lock_writer_unlock ##### -->
<para>

</para>

@rw_lock: 


<!-- ##### FUNCTION g_rw_lock_reader_lock ##### -->
<para>

</para>

@rw_lock: 


<!-- ##### FUNCTION g_rw_lock_reader_trylock ##### -->
<para>

</para>

@rw_lock: 
@Returns: 


<!-- ##### FUNCTION g_rw_lock_reader_unlock ##### -->
<para>

</para>

@rw_lock: 


<!-- ##### STRUCT GCond ##### -->
<para>

</para>


<!-- ##### FUNCTION g_cond_init ##### -->
<para>

</para>

@cond: 


<!-- ##### FUNCTION g_cond_clear ##### -->
<para>

</para>

@cond: 


<!-- ##### FUNCTION g_cond_wait ##### -->
<para>

</para>

@cond: 
@mutex: 


<!-- ##### FUNCTION g_cond_timed_wait ##### -->
<para>

</para>

@cond: 
@mutex: 
@abs_time: 
@Returns: 


<!-- ##### FUNCTION g_cond_wait_until ##### -->
<para>

</para>

@cond: 
@mutex: 
@end_time: 
@Returns: 


<!-- ##### FUNCTION g_cond_signal ##### -->
<para>

</para>

@cond: 


<!-- ##### FUNCTION g_cond_broadcast ##### -->
<para>

</para>

@cond: 


<!-- ##### STRUCT GPrivate ##### -->
<para>

</para>


<!-- ##### MACRO G_PRIVATE_INIT ##### -->
<para>

</para>

@notify: 


<!-- ##### FUNCTION g_private_get ##### -->
<para>

</para>

@key: 
@Returns: 


<!-- ##### FUNCTION g_private_set ##### -->
<para>

</para>

@key: 
@value: 


<!-- ##### FUNCTION g_private_replace ##### -->
<para>

</para>

@key: 
@value: 


<!-- ##### STRUCT GOnce ##### -->
<para>

</para>

@status: 
@retval: 

<!-- ##### ENUM GOnceStatus ##### -->
<para>

</para>

@G_ONCE_STATUS_NOTCALLED: 
@G_ONCE_STATUS_PROGRESS: 
@G_ONCE_STATUS_READY: 

<!-- ##### MACRO G_ONCE_INIT ##### -->
<para>

</para>



<!-- ##### MACRO g_once ##### -->
<para>

</para>

@once: 
@func: 
@arg: 


<!-- ##### FUNCTION g_once_init_enter ##### -->
<para>

</para>

@location: 
@Returns: 


<!-- ##### FUNCTION g_once_init_leave ##### -->
<para>

</para>

@location: 
@result: 


<!-- ##### FUNCTION g_bit_lock ##### -->
<para>

</para>

@address: 
@lock_bit: 


<!-- ##### FUNCTION g_bit_trylock ##### -->
<para>

</para>

@address: 
@lock_bit: 
@Returns: 


<!-- ##### FUNCTION g_bit_unlock ##### -->
<para>

</para>

@address: 
@lock_bit: 


<!-- ##### FUNCTION g_pointer_bit_lock ##### -->
<para>

</para>

@address: 
@lock_bit: 


<!-- ##### FUNCTION g_pointer_bit_trylock ##### -->
<para>

</para>

@address: 
@lock_bit: 
@Returns: 


<!-- ##### FUNCTION g_pointer_bit_unlock ##### -->
<para>

</para>

@address: 
@lock_bit: 


