我在从工作线程向主线程委派函数调用时遇到了一些问题。由于我无法从工作线程调用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);
有什么想法吗?
答案 0 :(得分:2)
要回答我自己的问题,这不起作用,因为我在一个旧的GTK版本,它需要首先通过调用g_thread_init()显式启用多线程。一旦我调用g_thread_init(),g_main_context_wakeup()就可以了。