mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-02-25 19:52:10 +01:00
gmain: Document more use cases of g_main_context_wakeup()
https://bugzilla.gnome.org/show_bug.cgi?id=701878
This commit is contained in:
parent
8a37af7f0e
commit
9d9532bdd3
30
glib/gmain.c
30
glib/gmain.c
@ -4307,8 +4307,34 @@ g_main_context_get_poll_func (GMainContext *context)
|
|||||||
* g_main_context_wakeup:
|
* g_main_context_wakeup:
|
||||||
* @context: a #GMainContext
|
* @context: a #GMainContext
|
||||||
*
|
*
|
||||||
* If @context is currently waiting in a poll(), interrupt
|
* If @context is currently blocking in g_main_context_iteration()
|
||||||
* the poll(), and continue the iteration process.
|
* waiting for a source to become ready, cause it to stop blocking
|
||||||
|
* and return. Otherwise, cause the next invocation of
|
||||||
|
* g_main_context_iteration() to return without blocking.
|
||||||
|
*
|
||||||
|
* This API is useful for low-level control over #GMainContext; for
|
||||||
|
* example, integrating it with main loop implementations such as
|
||||||
|
* #GMainLoop.
|
||||||
|
*
|
||||||
|
* Another related use for this function is when implementing a main
|
||||||
|
* loop with a termination condition, computed from multiple threads:
|
||||||
|
*
|
||||||
|
* |[
|
||||||
|
* #define NUM_TASKS 10
|
||||||
|
* static volatile gint tasks_remaining = NUM_TASKS;
|
||||||
|
* ...
|
||||||
|
*
|
||||||
|
* while (g_atomic_int_get (&tasks_remaining) != 0)
|
||||||
|
* g_main_context_iteration (NULL, TRUE);
|
||||||
|
* ]|
|
||||||
|
*
|
||||||
|
* Then in a thread:
|
||||||
|
* |[
|
||||||
|
* perform_work();
|
||||||
|
*
|
||||||
|
* if (g_atomic_int_dec_and_test (&tasks_remaining))
|
||||||
|
* g_main_context_wakeup (NULL);
|
||||||
|
* ]|
|
||||||
**/
|
**/
|
||||||
void
|
void
|
||||||
g_main_context_wakeup (GMainContext *context)
|
g_main_context_wakeup (GMainContext *context)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user