Bad*_*nda 5 c++ boost boost-asio
我一直在使用 boost asio 库,其中大多数对象都需要 io_context 对象作为构造函数的参数。我已经阅读了 io_context 对象,根据文档,它指出它是
io_context 类为异步 I/O 对象的用户提供核心 I/O 功能
这让我很困惑,因为这不是iostream所做的。我真的确定我遗漏了一些东西,请帮我澄清一下,而且我没有看到I/O 对象与套接字之间的太大区别,除了套接字可用于在两个设备之间交换数据,而 I/O 对象使我们能够与计算机交换数据。此时我真的很困惑!
io_context包含需要的状态基础上运行的事件循环select,epoll或其他特定于平台的呼叫和调度事件,如插座准备就绪,定时器,信号,闲置,给用户已注册的回调。许多不同套接字、定时器等的回调可以用一个io_context. io_context不执行 I/O,但是当 I/O 可以以非阻塞方式完成时调用这些回调,例如数据已经到达并且套接字准备好读取,并且回调执行实际的非阻塞 I/O .
有关更多详细信息,请参阅Basic Boost.Asio Anatomy。
C10K 问题很老,但对异步 I/O 的主题很有启发性。
C++20 协程引入了一种新的编程模型,它具有更易于编写和读取的优点,并且减轻了非阻塞 I/O 代码中固有的回调地狱。Boost.Asio 支持协程。
| 归档时间: |
|
| 查看次数: |
2237 次 |
| 最近记录: |