方法
GioOutputStreamwrite_async
声明 [src]
void
g_output_stream_write_async (
GOutputStream* stream,
void* buffer,
gsize count,
int io_priority,
GCancellable* cancellable,
GAsyncReadyCallback callback,
gpointer user_data
)
描述 [src]
请求从buffer向流中异步写入count
个字节。当操作完成时,将调用callback
。然后可以调用g_output_stream_write_finish()
以获取操作的结果。
在异步请求期间不允许进行其他同步和异步调用,否则将导致G_IO_ERROR_PENDING
错误。
如果count
的值大于G_MAXSSIZE
,将会产生一个G_IO_ERROR_INVALID_ARGUMENT
错误。
在成功的情况下,写入的字节数将传递给callback
。如果这个数与请求的大小不同,这并不是一个错误,因为在部分I/O错误的情况下可能会发生这种情况,但通常我们会尝试写入请求的所有字节。
可以保证此方法永远不会失败返回G_IO_ERROR_WOULD_BLOCK
- 如果stream无法接受更多数据,该方法将只等待直到这种情况改变。
优先级更高的(数值更低的)任何挂起的I/O请求将先于优先级较低的请求执行。默认优先级为G_PRIORITY_DEFAULT
。
异步方法有一个默认回退,使用线程实现异步性,所以对于继承类来说它们是可选的。然而,如果你覆盖了一个,那么你必须覆盖所有。
有关此函数的同步、阻塞版本,请参阅g_output_stream_write()。
请注意,不会对buffer
进行复制,因此它必须保留直到callback
被调用。有关使用GBytes
版本的g_output_stream_write_bytes_async()
,它将在调用期间自动保留内容(而不复制)的详细信息。
此方法异步完成。在GAsyncReadyCallback
内部使用g_output_stream_write_finish()
以获取操作的结果。
参数
缓冲区
-
类型: 一个
guint8
数组包含要写入数据的缓冲区。
数组的长度在 count
参数中指定。数据由方法调用者所有。 count
-
类型:
gsize
要写入的字节数。
io_priority
-
类型:
int
请求的I/O优先级。
cancellable
-
类型:
GCancellable
可选的
GCancellable
对象,设置为NULL
将忽略。此参数可以为 NULL
。数据由方法调用者所有。 callback
-
当请求满足时调用的
GAsyncReadyCallback
。此参数可以为 NULL
。 user_data
-
类型:
gpointer
传递给回调函数的数据。
此参数可以为 NULL
。数据由方法调用者所有。