【问题标题】:GTK: Delegate function call to main threadGTK:将函数调用委托给主线程
【发布时间】:2015-03-31 19:52:31
【问题描述】:

我在将函数调用从工作线程委托给主线程时遇到了一些问题。因为我不能从工作线程调用 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); 

有什么想法吗?

【问题讨论】:

    标签: c multithreading gtk glib


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-20
      • 2019-09-20
      • 2021-05-31
      相关资源
      最近更新 更多