gpt4 book ai didi

c++ - io_context 究竟是什么?

转载 作者:行者123 更新时间:2023-12-02 09:54:56 24 4
gpt4 key购买 nike

我一直在使用 boost asio 库,其中大多数对象都需要 io_context 对象作为构造函数的参数。我已经阅读了 io_context 对象,根据文档,它指出它是

The io_context class provides the core I/O functionality for users of the asynchronous I/O objects



这让我很困惑,因为这不是 iostream 确实。我真的确定我遗漏了一些东西,请帮我澄清一下,而且我看不到 之间的太大区别I/O 对象 socket 除了套接字可用于在两个设备之间交换数据而 I/O 对象使我们能够与我们的计算机交换数据这一事实之外,我真的很困惑!

最佳答案

io_context 包含运行事件循环所需的状态 select , epoll ,或其他特定于平台的调用和调度事件,例如套接字就绪、计时器、信号、空闲,到用户注册的回调。可以使用一个 io_context 注册针对不同套接字、计时器等的许多回调。 . io_context不执行 I/O,但当 I/O 可以以非阻塞方式完成时调用这些回调,例如数据已到达且套接字已准备好读取,回调执行实际的非阻塞 I/O。

Basic Boost.Asio Anatomy更多细节。

其他流行的事件循环是 libevent libuv

The C10K problem在异步 I/O 的主题上很旧但很有启发性。

C++20 coroutines引入一种新的编程模型,它具有更易于编写和读取的优点,并且可以缓解非阻塞 I/O 代码中固有的回调 hell 。 Boost.Asio supports coroutines .

关于c++ - io_context 究竟是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60997939/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com