方法

GioAsyncInitableinit_async

自:2.22

声明 [src]

void
g_async_initable_init_async (
  GAsyncInitable* initable,
  int io_priority,
  GCancellable* cancellable,
  GAsyncReadyCallback callback,
  gpointer user_data
)

描述 [src]

开始实现接口对象的异步初始化。这必须在对象在构造后初次使用之前完成。如果对象还实现了GInitable,您可以选择调用g_initable_init()

此方法仅供语言绑定使用。如果在C语言中编程,通常应使用g_async_initable_new_async()

初始化完成后,将调用callback。您可以调用g_async_initable_init_finish()以获取初始化的结果。

实现可能还支持取消。如果cancellable不为空,则可以在其他线程中触发可取消对象来取消初始化。如果操作被取消,将返回错误G_IO_ERROR_CANCELLED。如果cancellable不为空,并且对象不支持可取消初始化,则将返回错误G_IO_ERROR_NOT_SUPPORTED

一样,如果对象未初始化或初始化时返回错误,则除了g_object_ref()g_object_unref()之外的所有对象操作都视为无效,并且具有未定义的行为。它们通常会因g_critical()或g_warning()而失败,但不应依赖于此。

调用者不应假设实现GAsyncInitable的类可以初始化多次;有关更多信息,请参阅g_initable_init()。如果一个类明确支持多次初始化,则实现要求对第一次调用init_async()的结果所有后续调用都进行让步。

对于还支持GInitable接口的类,此方法的默认实现将在线程中运行g_initable_init()函数,因此如果您想通过线程支持异步初始化,只需实现GAsyncInitable接口,而不需重写任何接口方法。

自:2.22

此方法异步完成。请在GAsyncReadyCallback中调用g_async_initable_init_finish()以获取操作结果。

参数

io_priority

类型: int

操作的I/O优先级

cancellable

类型: GCancellable

可选的GCancellable对象,NULL表示忽略。

此参数可以为空。
此数据由方法调用者拥有。
callback

类型: GAsyncReadyCallback

当请求被满足时调用的 GAsyncReadyCallback

此参数可以为空。
user_data

类型: gpointer

传递给回调函数的数据。

此参数可以为空。
此数据由方法调用者拥有。