GTK:将函数调用委托给主线程

GTK: Delegate function call to main thread

我在将函数调用从工作线程委托给主线程时遇到了一些问题。由于我无法从工作线程调用 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() 现在工作正常。