Boost C++ 库

……是世界上最受推崇、设计最精良的 C++ 库项目之一。 Herb SutterAndrei Alexandrescu, C++ Coding Standards

basic_writable_pipe::async_write_some - Boost C++ 函数库
PrevUpHomeNext

开始异步写入。

template<
    typename ConstBufferSequence,
    typename WriteToken = default_completion_token_t<executor_type>>
DEDUCED async_write_some(
    const ConstBufferSequence & buffers,
    WriteToken && token = default_completion_token_t< executor_type >());

此函数用于将数据异步写入管道。它是 异步操作 的发起函数,并且始终立即返回。

参数

缓冲区

要写入管道的一个或多个数据缓冲区。虽然缓冲区对象可以根据需要进行复制,但底层内存块的所有权仍由调用者保留,调用者必须确保在调用完成处理程序之前它们保持有效。

标记

将用于生成完成处理程序的 完成标记,将在写入完成后调用。可能的完成标记包括 use_futureuse_awaitableyield_context,或者具有正确完成签名的函数对象。完成处理程序的函数签名必须是

void handler(
  const boost::system::error_code& error, // Result of operation.
  std::size_t bytes_transferred // Number of bytes written.
);

无论异步操作是立即完成还是未立即完成,都不会在此函数内调用完成处理程序。在立即完成时,将以等同于使用 async_immediate 的方式调用处理程序。

完成签名
void(boost::system::error_code, std::size_t)
备注

写入操作可能不会将所有数据传输给对端。如果您需要确保在异步操作完成之前写入所有数据,请考虑使用 async_write 函数。

示例

要写入单个数据缓冲区,请使用 buffer 函数,如下所示:

pipe.async_write_some(boost::asio::buffer(data, size), handler);

有关一次写入多个缓冲区的信息,以及如何将其与数组、boost::array 或 std::vector 结合使用,请参阅 buffer 文档。


PrevUpHomeNext