document g_once_init_enter and g_once_init_leave.
authorTim Janik <timj@imendio.com>
Tue, 10 Jul 2007 10:31:31 +0000 (10:31 +0000)
committerTim Janik <timj@src.gnome.org>
Tue, 10 Jul 2007 10:31:31 +0000 (10:31 +0000)
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

docs/reference/ChangeLog
docs/reference/glib/tmpl/threads.sgml

index 6d9412b..27a10c4 100644 (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.
index 4432c81..274a9a1 100644 (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