我正在开发一个服务应用程序(rpm 守护进程)。此服务提供一些实用程序(文件传输(FT)等)。
现在的情况是,当服务启动时,我为 FT 实用程序创建了一个单独的 g_thread。在 FT 实用程序代码中,我出于某种目的添加了 g_timeout_add()。
现在,我只想在 FT 线程中运行 (g_timeout_add) 中给出的源函数。目前它在我不想要的默认(主)上下文中运行。
我怎样才能实现它?
该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);
Run Code Online (Sandbox Code Playgroud)
您可以将其隔离在您自己的便利功能中。