GTK:委托函数调用主线程

时间:2015-03-31 19:52:32

标签: c multithreading gtk glib

我在从工作线程向主线程委派函数调用时遇到了一些问题。由于我无法从工作线程调用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); 

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

要回答我自己的问题,这不起作用,因为我在一个旧的GTK版本,它需要首先通过调用g_thread_init()显式启用多线程。一旦我调用g_thread_init(),g_main_context_wakeup()就可以了。