虚拟方法
GioAsyncInitableinit_async
since: 2.22
声明 [源]
void
init_async (
GAsyncInitable* initable,
int io_priority,
GCancellable* cancellable,
GAsyncReadyCallback callback,
gpointer user_data
)
描述 [源]
开始异步初始化接口实现的对象。必须在对象初步构建后使用对象之前进行此操作。如果对象还实现了GInitable
,则可以Optional调用g_initable_init()
。
此方法用于语言绑定。如果在编写C,通常应使用g_async_initable_new_async()
初始化完成后,将调用callback
。然后您可以通过调用g_async_initable_init_finish()
来获取初始化的结果。
实现可能还支持取消。如果cancellable
不是NULL
,则可以从另一个线程触发可取消对象来取消初始化。如果操作已取消,则将返回错误G_IO_ERROR_CANCELLED
。如果cancellable
不是NULL
,并且对象不支持可取消初始化,则返回错误G_IO_ERROR_NOT_SUPPORTED
。
与GInitable
一样,如果对象未初始化,或者初始化返回错误,则认为对该对象的除g_object_ref()
和g_object_unref()
之外的所有操作都是无效的,并且它们的操作是未定义的。它们通常会失败于g_critical()
或g_warning(),但不应依赖于此。
调用者不应假设实现了GAsyncInitable
的类可以初始化多次;有关更多信息,请参阅g_initable_init()。如果一个类明确支持多次初始化,则实现需要在第一个调用之后将所有后续对init_async()
的调用返回结果。
对于同时支持GInitable
接口的类,此方法的默认实现将在线程中运行g_initable_init()
函数,因此如果要通过线程支持异步初始化,只需实现GAsyncInitable
接口而无需覆盖任何接口方法即可。
自从:2.22
参数
io_priority
-
类型:
int
操作的I/O优先级
cancellable
-
类型:
GCancellable
可选的
GCancellable
对象,NULL
忽略。参数可以 NULL
。数据由方法调用者拥有。 callback
-
满足请求时要调用的
GAsyncReadyCallback
。 user_data
-
类型:
gpointer
要传递给回调函数的数据。
参数可以 NULL
。数据由方法调用者拥有。