gpt4 book ai didi

c - 在线程上下文中运行 g_timeout_add 而不是在默认上下文中

转载 作者:太空宇宙 更新时间:2023-11-04 06:28:41 24 4
gpt4 key购买 nike

我正在开发服务应用程序(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);

您可以将它隔离在您自己的便利函数中。

关于c - 在线程上下文中运行 g_timeout_add 而不是在默认上下文中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22980188/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com