Package: glib

Function g-main-context-wakeup

Lambda List

g-main-context-wakeup (context)

Arguments

context -- a g-main-context instance

Details

If context is currently blocking in a call of the g-main-context-iteration function waiting for a source to become ready, cause it to stop blocking and return. Otherwise, cause the next invocation of the g-main-context-iteration function to return without blocking.

This API is useful for low-level control over a main context. For example, integrating it with main loop implementations such as a g-main-loop implementation.

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);
 

See also

2021-12-10