结构体

GLibMainContext

说明 [src]

struct GMainContext {
  /* No available fields */
}

GMainContext 结构体是不透明的数据类型,用于表示要主循环中处理的一组源。

构造函数

g_main_context_new

创建一个新的 GMainContext 结构体。

g_main_context_new_with_flags

创建一个新的 GMainContext 结构体。

自版本:2.72

方法

g_main_context_default

返回全局默认主上下文。当未明确指定主循环时,这是用于主循环方法的主上下文,并且对应于“主”主循环。另请参阅 g_main_context_get_thread_default()

g_main_context_get_thread_default

获取此线程的线程默认 GMainContext。希望在默认上下文之外运行的异步操作应调用此方法或 g_main_context_ref_thread_default() 以获取一个 GMainContext 来向其中添加其 GSource。(请注意,即使在单线程程序中,应用程序有时也可能希望临时推送一个非默认上下文,因此如果您在默认线程中运行,则不能安全地假定这将始终返回 NULL)。

自版本:2.22

g_main_context_pusher_free

pusher 的主上下文弹出为线程默认主上下文。有关详细信息,请参阅 g_main_context_pusher_new()

自版本:2.64

g_main_context_ref_thread_default

获取此线程的线程默认 GMainContext,如同 g_main_context_get_thread_default(),但也会使用 g_main_context_ref() 为其添加一个引用。此外,与 g_main_context_get_thread_default() 不同,如果线程默认上下文是全局默认上下文,则此方法将返回该 GMainContext(已添加了一个引用),而不是返回 NULL

自版本:2.32

实例方法

g_main_context_acquire

尝试成为指定上下文的拥有者。如果有其他线程拥有该上下文,则立即返回 FALSE。所有权是真正递归的:所有者可以再次要求所有权,并且将在调用 g_main_context_release() 的次数与 g_main_context_acquire() 相同的次数后释放所有权。

g_main_context_add_poll

将文件描述符添加到此上下文所轮询的文件描述符组中。这很少会直接使用。相反,典型的事件源将使用 g_source_add_unix_fd

g_main_context_check

将轮询结果传递回主循环。您应谨慎地按照从 g_main_context_query() 接收到的方式传递 fds 及其长度 n_fds,因为此函数依赖于关于如何填充 fds 的假设。

g_main_context_dispatch

调度所有挂起的来源。

g_main_context_find_source_by_funcs_user_data

使用给定的来源函数和用户数据查找来源。如果存在具有相同来源函数和用户数据的多个来源,则将返回找到的第一个来源。

g_main_context_find_source_by_id

查找给定一对上下文和 IDGSource

g_main_context_find_source_by_user_data

使用给定的用户数据找到回调的来源。如果存在具有相同用户数据的多个来源,则将返回找到的第一个来源。

g_main_context_get_poll_func

获取由 g_main_context_set_poll_func() 设置的轮询函数。

g_main_context_invoke

以一种方式调用函数,使得在调用 function 期间拥有 context

since: 2.28

g_main_context_invoke_full

以一种方式调用函数,使得在调用 function 期间拥有 context

since: 2.28

g_main_context_is_owner

确定此线程是否拥有此 GMainContext 的(递归)所有权。在等待可能阻塞以获取 context 所有权的另一个线程之前了解此信息非常有用。

since: 2.10

g_main_context_iteration

为给定的主循环运行一个单一迭代。这涉及检查是否有任何事件源准备好进行处理,如果没有任何事件源准备好并且 may_blockTRUE,则等待源准备好,然后调度准备好的最高优先级事件源。否则,如果 may_blockFALSE,则不会等待源准备好,此时只会调度准备好(如果现在有的话)的那些最高优先级事件源,而无需进一步等待。

g_main_context_pending

检查给定上下文中是否有任何源具有挂起的事件。

g_main_context_pop_thread_default

从线程默认上下文堆栈中弹出 context(验证它位于堆栈的顶部)。

自版本:2.22

g_main_context_prepare

准备在主循环中轮询源。轮询的结果信息由调用 g_main_context_query() 确定。

g_main_context_push_thread_default

获取 context 并将其设置为当前线程的线程默认上下文。这会导致在此线程中启动的某些异步操作(如大多数基于 [gio][gio] 的 I/O)在 context 下运行并将结果传递给其主循环,而不是在主线程的全局默认主上下文中运行。注意,调用此函数会更改由 g_main_context_get_thread_default() 返回的上下文,而不是由 g_main_context_default() 返回的上下文,因此它不会影响由诸如 g_idle_add() 等函数使用的上下文。

自版本:2.22

g_main_context_pusher_new

使用 g_main_context_push_thread_default()main_context 推入作为当前线程的新线程默认主上下文,并返回一个新的 GMainContextPusher。使用 g_main_context_pusher_free() 弹出。在存在 GMainContextPusher 的同时对 main_context 使用 g_main_context_pop_thread_default() 可能会导致未定义的行为。

自版本:2.64

g_main_context_query

确定轮询此主循环所需的信息。在调用 g_main_context_check() 时,你应该小心地按原样传递结果 fds 数组及其长度 n_fds,因为这个函数依赖于填充数组时做出的假设。

g_main_context_ref

GMainContext 对象上的引用计数增加一。

g_main_context_release

释放此前通过 g_main_context_acquire() 由此线程获取的上下文的拥有权。如果多次获取上下文,只有在 g_main_context_release() 被调用的次数和获取的次数一样多时,才会释放所有权。

g_main_context_remove_poll

从要针对特定上下文轮询的文件描述符集中移除文件描述符。

g_main_context_set_poll_func

设置用于处理文件描述符轮询的函数。将使用它而不是 poll() 系统调用(或 GLib 的替代函数,它在 poll() 不可用的地方使用)。

g_main_context_unref

GMainContext 对象上的引用计数减少一。如果结果为零,释放上下文并释放所有关联的内存。

g_main_context_wait

尝试获取指定上下文的拥有权,就像 g_main_context_acquire() 中那样。但是,如果另一个线程是所有者,请自动释出 mutex,并等到该所有者释放拥有权或 cond 被标记后,在 cond 上等待,然后再次(一次)尝试获取所有权。

已弃用:2.58 

g_main_context_wakeup

如果 context 当前在 g_main_context_iteration() 中阻塞,等待某个源变为就绪状态,则导致它停止阻塞并返回。否则,导致下次调用 g_main_context_iteration() 在不阻塞的情况下返回。