[关闭]
@john-lee 2021-01-02T14:47:36.000000Z 字数 738 阅读 584

反应器式操作(Reactor-Style Operations)

Boost.Asio


有时,程序必须与想要执行 I/O 操作本身的第三方库集成。为了促进这一点,Boost.Asio 包括同步和异步操作,这些操作可用于等待套接字准备好读取、准备写入或出现挂起的错误情况。

例如,要执行非阻塞读取,可以使用以下类似的操作:

  1. ip::tcp::socket socket(my_io_context);
  2. ...
  3. socket.non_blocking(true);
  4. ...
  5. socket.async_wait(ip::tcp::socket::wait_read, read_handler);
  6. ...
  7. void read_handler(boost::system::error_code ec)
  8. {
  9. if (!ec)
  10. {
  11. std::vector<char> buf(socket.available());
  12. socket.read_some(buffer(buf));
  13. }
  14. }

这些操作支持所有平台上的套接字,以及 POSIX 的面向流的描述符类。

另请参阅

basic_socket::wait(),basic_socket::async_wait(),basic_socket::non_blocking(),basic_socket::native_non_blocking(),非阻塞示例。


Copyright © 2003-2020 Christopher M. Kohlhoff

Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注