gpt4 book ai didi

c++ - io_service,为什么以及如何使用它?

转载 作者:IT老高 更新时间:2023-10-28 12:33:28 25 4
gpt4 key购买 nike

正在尝试学习 asio,我正在关注网站上的示例。

为什么需要 io_service 以及它的具体作用是什么?为什么我在执行异步操作时需要将它发送到几乎所有其他函数,为什么它不能在第一次“绑定(bind)”之后“创建”自己。

最佳答案

Asio 的 io_service 是异步函数操作的 boost 者。一旦异步操作准备就绪,它就会使用 io_service 的其中一个正在运行的线程来回调您。如果不存在这样的线程,它会使用自己的内部线程来调用您。

把它想象成一个包含操作的队列。它保证这些操作在运行时只会在调用其 run()run_once() 方法的线程上执行,或者在处理套接字和异步时执行IO,它的内部线程。

您必须将其传递给每个人的原因基本上是有人必须等待异步操作准备好,并且如其自己的文档中所述 io_service 是 ASIO 到操作系统 I/O 的链接服务,因此它抽象出平台自己的异步通知器,例如 kqueue/dev/pool/epoll,以及操作方法那些,例如 select().

我最终主要使用 io_service 来分离来自系统多个部分的回调,并确保它们在同一个线程上运行,从而消除了显式锁定的需要,因为这些操作是序列化的。对于异步应用程序来说,这是一个非常强大的习惯用法。

你可以看看core documentation更好地了解为什么需要 io_service 以及它的作用。

关于c++ - io_service,为什么以及如何使用它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/717239/

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