结构体

GLibSource

描述 [源代码]

struct GSource {
  /* No available fields */
}

GSource 结构体是一个表示事件源的不透明数据类型。

构造函数

g_source_new

创建一个新的 GSource 结构体。指定大小是为了允许创建包含附加数据的 GSource 衍生结构体。传入的大小必须至少为 sizeof (GSource)

函数

g_source_remove

从默认主上下文中移除具有给定 ID 的源。你必须对添加到非默认主上下文的源使用 g_source_destroy()

g_source_remove_by_funcs_user_data

根据源函数和用户数据从默认主循环上下文中移除一个源。如果存在具有相同源函数和用户数据的多个源,则只销毁一个。

g_source_remove_by_user_data

根据回调函数的用户数据从默认主循环上下文中移除一个源。如果存在具有相同用户数据的多个源,则只销毁一个。

g_source_set_name_by_id

利用源的 ID 设置源的名称。

起版本:2.26

实例方法

g_source_add_child_source

child_source 添加到 source 中,作为“轮询”源;将 source 添加到 GMainContext 时,将自动添加具有相同优先级的 child_source,当触发 child_source 时,它将导致 source 调度(除调用其自身回调外),并且当销毁 source 时,它将同时销毁 child_source。(如果 source 自身的 prepare/check 函数指示它准备就绪,则它仍将被调度。)

从 2.28 版开始

g_source_add_poll

将文件描述符添加到此来源轮询的文件描述符集中。这通常与 g_source_new() 结合使用以添加事件源。事件源的检查功能通常将测试 GPollFD 结构中的 revents 域,并且在需要处理事件时返回 TRUE

g_source_add_unix_fd

用于 IO 监视 fd,事件在 events 中。

从 2.36 版开始

g_source_attach

GSource 添加到 context 中,以便在该上下文中执行它。通过调用 g_source_destroy() 将其删除。

g_source_destroy

从其 GMainContext 中删除一个源(如果有),并标记它为已销毁。该来源不能随后被添加到其他上下文中。对那些已从其上下文中移除的源调用此函数是安全的。

g_source_get_can_recurse

检查源是否允许递归调用。参见 g_source_set_can_recurse()

g_source_get_context

获取与该源关联的 GMainContext

g_source_get_current_time

此函数忽略 source,其他方面与 g_get_current_time() 相同。

已弃用:2.28 

g_source_get_id

返回特定源的数字 ID。源的 ID 是特定主循环上下文中唯一的正整数。从 ID 到源的反向映射由 g_main_context_find_source_by_id() 完成。

g_source_get_name

获取源的一个名称,用于调试和分析性能。如果该名称从未使用 g_source_set_name() 设置过,则该名称可能是 NULL

起版本:2.26

g_source_get_priority

获取源的优先级。

g_source_get_ready_time

获取 source 的“准备时间”,由 g_source_set_ready_time() 设置。

g_source_get_time

获取在检查此源时要使用的时间。与直接调用 g_get_monotonic_time() 相比,调用此函数的好处在于,在检查多个源时,GLib 可以缓存一个值,而无需重复获取系统单调时间。

从 2.28 版开始

g_source_is_destroyed

返回 source 是否已销毁。

从 2.12 版开始

g_source_modify_unix_fd

更新事件掩码来监视由 tag 标识的 fd。

从 2.36 版开始

g_source_query_unix_fd

查询上次轮询时,针对 source 中与 tag 对应的 fd 报告的事件。

从 2.36 版开始

g_source_ref

将源的引用计数增加一。

g_source_remove_child_source

source 中分离 child_source 并将其销毁。

从 2.28 版开始

g_source_remove_poll

从该源轮询的文件描述符集中删除一个文件描述符。

g_source_remove_unix_fd

逆转之前调用 g_source_add_unix_fd() 的效果。

从 2.36 版开始

g_source_set_callback

设置源的回调函数。源的回调函数是从源的调度函数中调用的。

g_source_set_callback_indirect

设置回调函数,将数据存储为引用计数的回调“对象”。它在内部使用。注意,调用 g_source_set_callback_indirect() 假定 callback_data 上的初始引用计数,因此 callback_funcs->unref 将最终比 callback_funcs->ref 多调用一次。

g_source_set_can_recurse

设置源是否可以递归调用。如果 can_recurseTRUE,则在源派送期间,将正常处理此源。否则,此源的所有处理将被阻止,直到分派函数返回。

g_source_set_dispose_function

dispose 设置为 source 上的处置函数。当 source 的引用计数达到 0 时,将调用 dispose,但在释放源的任何状态之前,尤其是在调用终结函数之前。

since: 2.64

g_source_set_funcs

设置未附加源的源函数(可用于覆盖默认实现)。

从 2.12 版开始

g_source_set_name

设置源的名称,用于调试和分析性能。该名称默认为 NULL

起版本:2.26

g_source_set_priority

设置源的优先级。在运行主循环时,当源准备就绪并且以较高(数字较小)优先级就绪的源尚未准备就绪的情况下,将派送源。

g_source_set_ready_time

设置在达到给定的单调时间(或超过该时间)时派送 GSource。如果单调时间为过去(如果 ready_time 为 0,则始终如此),则将立即派送源。

从 2.36 版开始

g_source_set_static_name

g_source_set_name() 的一种变体形式,不会复制 name,并且只能与字符串文字一起使用。

since: 2.70

g_source_unref

将源的引用计数减一。如果所得的引用计数为零,则将销毁源及相关内存。