If this is currently blocking in iteration waiting for a source to become ready, cause it to stop blocking and return.
Otherwise, cause the next invocation of iteration to return without blocking.
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 gint tasks_remaining = NUM_TASKS; // (atomic)
while (g_atomic_int_get (&tasks_remaining) != 0)
g_main_context_iteration (NULL, TRUE);
Then in a thread:
if (g_atomic_int_dec_and_test (&tasks_remaining))