document g_once_init_enter and g_once_init_leave.

Tue Jul 10 12:31:04 2007  Tim Janik  <timj@imendio.com>

        * glib/tmpl/threads.sgml: document g_once_init_enter and g_once_init_leave.



svn path=/trunk/; revision=5617
This commit is contained in:
Tim Janik 2007-07-10 10:31:31 +00:00 committed by Tim Janik
parent c9ccc828f1
commit 1132766280
2 changed files with 43 additions and 0 deletions

View File

@ -1,3 +1,7 @@
Tue Jul 10 12:31:04 2007 Tim Janik <timj@imendio.com>
* glib/tmpl/threads.sgml: document g_once_init_enter and g_once_init_leave.
2007-07-09 Matthias Clasen <mclasen@redhat.com>
* tmpl/modules.sgml: Remove duplicate paragraph.

View File

@ -1720,3 +1720,42 @@ get_debug_flags ()
@Since: 2.4
<!-- ##### FUNCTION g_once_init_enter ##### -->
<para>
Function to be called when starting a critical initialization section.
The argument value_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 g_once_init_leave() and the unique address value_location,
it can be ensured that an initialization section will be executed only once
during a programs life time, and that concurrent threads are blocked until
initialization completed. To be used in constructs like this:
</para>
<para>
<informalexample>
<programlisting>
static gsize initialization_value = 0;
if (g_once_init_enter (&initialization_value)) // section start
{
gsize setup_value = 42; // initialization code here
g_once_init_leave (&initialization_value, setup_value); // section end
}
</programlisting>
</informalexample>
</para>
@value_location: location of a static initializable variable containing 0.
@Returns: %TRUE if the initialization section should be netered, %FALSE and blocks otheriwse
@Since: 2.14
<!-- ##### FUNCTION g_once_init_leave ##### -->
<para>
Counterpart to g_once_init_enter(). 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
g_once_init_enter() on this initialization variable.
</para>
@value_location: location of a static initializable variable containing 0.
@initialization_value: new non-0 value for *@value_location:
@Since: 2.14