问题
Decreases the reference count on a GMainLoop object by one.
If the result is zero, free the loop and free all associated memory.
我找不到有关此参考计数器的信息。最初设定的是什么以及如何使用?
详情
特别是,我对这段示例代码感到困惑(在main方法中)(注意set_cancel是一个静态方法:
void (*old_sigint_handler)(int);
old_sigint_handler = signal (SIGINT, set_cancel);
/* Create a new glib main loop */
data.main_loop = g_main_loop_new (NULL, FALSE);
old_sigint_handler = signal (SIGINT, set_cancel);
/* Run the main loop */
g_main_loop_run (data.main_loop);
signal (SIGINT, old_sigint_handler);
g_main_loop_unref (data.main_loop);
如果g_main_loop被阻止,它将如何停止?我也找不到有关此信号方法的信息。但这可能是图书馆的原生(虽然我不知道)。
注意:我将上面的代码简化为我认为必不可少的部分。它是来自docs / reference / aravis / html / ArvCamera.html下名为aravis的相机界面库
答案 0 :(得分:4)
我找不到有关此参考计数器的信息。最初设定的是什么以及如何使用?
最初设置为1.每当存储对象的引用时,都会增加引用计数器,并且每当删除引用时,都会减少引用计数器。这是手动垃圾收集的一种形式。只是谷歌“引用计数”,你会得到很多信息。
如果g_main_loop被阻止,它将如何停止?
有人会打电话给g_main_loop_quit。从我猜测你不太熟悉事件循环概念的问题来看 - GLib的手册不是对基本概念的非常温和的介绍,你可能想尝试Wikipedia article或者只是搜索为“事件循环”。
我也找不到有关此信号方法的信息。但这可能是图书馆的原生(虽然我不知道)。
signal
是标准函数(C和POSIX)。同样,有很多信息,包括好的旧手册页(man 2 signal)。