我正在开发一个服务应用程序(rpm守护程序)。此服务提供一些实用程序(文件传输(FT)等)。
现在的情况是,当服务启动时,我为FT实用程序创建了一个单独的g_thread。在FT实用程序代码中,我为某些目的添加了g_timeout_add()。
现在,我想在FT线程中运行(g_timeout_add)中给出的源函数。目前它是在我不想要的默认(主)上下文中运行。
我怎样才能实现它?
答案 0 :(得分:4)
g_timeout_add()
函数可以方便地创建GTimeoutSource
,为其附加回调函数,并将源附加到默认GMainContext
。如果你需要使用另一个GMainContext
那么你需要做g_timeout_add()
所做的事情,即:
GSource *source = g_timeout_source_new (interval_in_msecs);
g_source_set_priority (source, your_priority);
g_source_set_callback (source, your_callback, your_data, your_data_notify);
g_source_set_name (source, source_name); // useful for debugging
return g_source_attach (source, your_main_context);
你可以在自己的便利功能中隔离它。