Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb SutterAndrei Alexandrescu, C++ Coding Standards

PrevUpHomeNext

io_context::strand

提供串行化的处理程序执行。

class strand
成员函数

名称

描述

context

获取底层执行上下文。

defer

请求 strand 调用给定的函数对象。

dispatch

请求 strand 调用给定的函数对象。

on_work_finished

告知 strand 某些工作不再挂起。

on_work_started

告知 strand 它有一些待完成的工作。

post

请求 strand 调用给定的函数对象。

running_in_this_thread

确定 strand 是否在当前线程中运行。

strand [构造函数]

构造函数。

复制构造函数。

wrap

(已弃用:请使用 boost::asio::bind_executor()。) 创建一个新的处理程序,该处理程序自动在 strand 上分派包装的处理程序。

~strand [析构函数]

析构函数。

友元

名称

描述

operator!=

比较两个 strand 是否不相等。

operator==

比较两个 strand 是否相等。

io_context::strand 类提供了发布和分派处理程序的能力,并保证这些处理程序都不会并发执行。

处理程序调用顺序

给定

如果以下任何条件为真

a() 先于 b() 发生

请注意在以下情况中

async_op_1(..., s.wrap(a));
async_op_2(..., s.wrap(b));

第一个异步操作的完成将执行 s.dispatch(a),第二个异步操作的完成将执行 s.dispatch(b),但执行它们的顺序是未指定的。也就是说,您无法说明一个是否先于另一个发生。因此,以上任何条件均不满足,并且不提供排序保证。

备注

该实现不保证通过不同的 strand 对象发布或分派的处理程序将并发调用。

线程安全性

不同的 对象: 安全。

共享 对象: 安全。

要求

头文件: boost/asio/io_context_strand.hpp

便利头文件: boost/asio.hpp


PrevUpHomeNext