相关疑难解决方法(0)

strands如何保证在boost.asio中正确执行挂起事件

考虑使用Boost.asio实现的echo服务器.从连接的客户端读取事件会导致数据块被放置到到达事件队列中.线程池通过这些事件工作 - 对于每个事件,线程获取事件中的数据并将其回送到连接的客户端.

在此输入图像描述

如上图所示,事件队列中可能存在多个来自单个客户端的事件.为了确保按顺序执行和交付给定客户端的这些事件,使用了股数.在这种情况下,来自给定连接客户端的所有事件都在客户端的链中执行.

我的问题是:股如何保证事件处理的正确顺序?我认为必须存在某种锁定链,但即使这样也是不够的,所以必须有更多,我希望有人可以解释一下我们指向一些代码来做到这一点?

我找到了这个文档: 如何工作以及为什么要使用它们

它揭示了这种机制的一些亮点,但是在一条链中说"处理程序执行顺序无法保证".这是否意味着我们最终会收到"永远的草莓."字段?

此外 - 每当新客户端连接时,我们是否必须创建一个新的链,以便每个客户端有一个链?

最后 - 当读取事件到来时,我们如何知道将其添加到哪个链?使用连接作为关键,必须从所有股线中查找钢绞线?

c++ multithreading boost-asio

6
推荐指数
2
解决办法
1239
查看次数

标签 统计

boost-asio ×1

c++ ×1

multithreading ×1