{ gboolean done_foo = FALSE, done_bar = FALSE; void foo_cb (yada) { done_foo = TRUE; } void bar_cb (yada) { done_bar = TRUE; } call_foo_async (yada, foo_cb); call_bar_async (yada, bar_cb); while (!done_foo || !done_bar) g_main_context_iterate (); ...continue... }