GTK:委托函数调用主线程
问题描述:
我有一些问题委托一个工作线程的主线程的函数调用。由于我无法从工作线程调用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);
任何想法?
答
为了回答我自己的问题,这不起作用,因为我在一个旧的GTK版本上,它需要通过首先调用g_thread_init()明确启用多线程。一旦我调用g_thread_init(),g_main_context_wakeup()现在可以正常工作。