2015-03-31 98 views
1

我有一些问题委托一个工作线程的主线程的函数调用。由于我无法从工作线程调用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); 

任何想法?

回答

2

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