gpt4 book ai didi

c - 每 x 分钟更新一次变量

转载 作者:太空宇宙 更新时间:2023-11-04 08:44:56 25 4
gpt4 key购买 nike

我有一个小程序,它使用 glib。你可以在代码审查中看到它。标题是“阅读消息。有什么可以做得更好?”。我在 main 方法中有一个无休止的 while 循环。在这个循环中,我有一个 GTree。

int main()
{
//some setup/mallocs
GTree* t = g_tree_new_full((GCompareDataFunc)g_ascii_strcasecmp,NULL,free_data,free_data);
while (1) {
//some tasks; accessing tree
}
//some free
}

在此循环内访问树。我希望每 x 分钟更新一次这棵树(例如每 15 分钟)。是否可以?我该怎么做才能避免碰撞?

最佳答案

不要在代码中执行 while (1) { ... },而是使用 GLib's main event loop .除了使这变得更容易之外,它还允许您与其他基于主循环的代码集成,例如 GTK+、GIO 和其他库中的异步函数。

gboolean every_15_minutes (gpointer user_data) {
/* some tasks; accessing tree */
}

int main (void) {
GMainLoop* loop = g_main_loop_new (NULL, FALSE);
/* some setup/mallocs */
GTree* t = g_tree_new_full((GCompareDataFunc)g_ascii_strcasecmp,NULL,free_data,free_data);
g_timeout_add_seconds (60 * 15, every_15_minutes, NULL);
g_main_loop_run (loop);
/* some free */
}

至于避免碰撞,你可以做 g_tree_lookup验证在 g_tree_insert 之前没有任何包含该键的现有条目, 或者只是做一个 g_tree_replace如果发生冲突,它将丢弃旧值。

关于c - 每 x 分钟更新一次变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22074993/

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