У меня возникли проблемы с делегированием вызова функции в основной поток из рабочего потока. Поскольку я не могу позвонить в GTK из рабочего потока, я хочу делегировать этот вызов основному потоку, чтобы сделать это для меня. Функция должна быть вызвана как можно скорее на основном потоке.GTK: вызов функции делегата в основной поток
Я попробовал следующее:
g_idle_add(myfunc, myargs);
g_main_context_wakeup(NULL);
Но это не работает. myfunc() не вызывается немедленно, а только когда приходит какой-то другой вход, который, по-видимому, вызывает основной цикл. Я не понимаю, почему это не работает. Не следует ли g_main_context_wakeup() запустить основной цикл?
Мой главный цикл выглядит следующим образом:
loop = g_main_loop_new(NULL, FALSE);
while(!quit) g_main_context_iteration(NULL, TRUE);
Любые идеи?