2015-03-31 59 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()現在可以正常工作。