gpt4 book ai didi

c++ - Boost:单线程 IO 服务

转载 作者:行者123 更新时间:2023-11-28 00:24:12 25 4
gpt4 key购买 nike

在我的应用程序中,我将收到各种事件,我想按优先顺序异步处理这些事件。

我可以用 boost::asio::io_service 做到这一点,但我的应用程序是单线程的。我不想为多线程程序可能需要的锁和 mallocs 付费(性能成本对我来说确实很重要)。我基本上是在寻找为单线程执行编写的 boost::asio::io_service

我很确定我可以使用 boost::coroutine 自己实现它,但在我这样做之前,做一些类似 boost::asio::io_service 的事情为单线程执行编写的已经存在了吗?我已经扫描了 boost 库的列表,但没有什么特别突出的

最佳答案

请注意,一旦您使用 Asio 的任何非阻塞调用,您就<​​em>必须支付同步费用。

即使您可能使用单个线程来安排工作和处理结果回调,Asio 可能仍然需要在内部产生额外的线程来执行异步调用。这些将同时访问 io_service

想想套接字上的async_read:一旦收到的数据可用,套接字就必须通知io_service。这与您的主线程并发发生,因此需要额外的同步。

对于阻塞 I/O,这个问题在理论上消失了,但由于异步 I/O 是库的全部要点,我不希望在实现中为这种情况找到太多优化。

原样pointed out in the comments已经,只有一个主线程时 io_service 上的争用将非常低,因此除非分析表明那里存在明显的性能瓶颈,否则您不应该太担心它。

关于c++ - Boost:单线程 IO 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25902911/

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