From 11327662805b353d8263542204932090b4cdab4c Mon Sep 17 00:00:00 2001 From: Tim Janik Date: Tue, 10 Jul 2007 10:31:31 +0000 Subject: [PATCH] document g_once_init_enter and g_once_init_leave. Tue Jul 10 12:31:04 2007 Tim Janik * glib/tmpl/threads.sgml: document g_once_init_enter and g_once_init_leave. svn path=/trunk/; revision=5617 --- docs/reference/ChangeLog | 4 ++++ docs/reference/glib/tmpl/threads.sgml | 39 +++++++++++++++++++++++++++++++++++ 2 files changed, 43 insertions(+) diff --git a/docs/reference/ChangeLog b/docs/reference/ChangeLog index 6d9412b..27a10c4 100644 --- a/docs/reference/ChangeLog +++ b/docs/reference/ChangeLog @@ -1,3 +1,7 @@ +Tue Jul 10 12:31:04 2007 Tim Janik + + * glib/tmpl/threads.sgml: document g_once_init_enter and g_once_init_leave. + 2007-07-09 Matthias Clasen * tmpl/modules.sgml: Remove duplicate paragraph. diff --git a/docs/reference/glib/tmpl/threads.sgml b/docs/reference/glib/tmpl/threads.sgml index 4432c81..274a9a1 100644 --- a/docs/reference/glib/tmpl/threads.sgml +++ b/docs/reference/glib/tmpl/threads.sgml @@ -1720,3 +1720,42 @@ get_debug_flags () @Since: 2.4 + + +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: + + + + + +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 + } + + + + +@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 + + + +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. + + +@value_location: location of a static initializable variable containing 0. +@initialization_value: new non-0 value for *@value_location: +@Since: 2.14 -- 2.7.4