c++ - strand.post 和 strand.wrap 的性能区别是什么?

标签 c++ boost boost-asio

strand::post()strand::wrap() 之间的性能差异是什么?使用 strand::wrap() 时关于竞争条件的故事是什么?

最佳答案

只是为了澄清,strand::wrap只创建一个处理程序,提供的处理程序和返回的处理程序都不会被分派(dispatch)或发布到 io_service。如果执行 strand::wrap 的结果,则开销带来的性能差异可以忽略不计。但是,由于使用 dispatch() 的包装处理程序,可能会出现感知到的性能差异。 ,在某些情况下,用户的处理程序将立即执行,而不是 post() ,其中用户的处理程序始终添加到队列中。

此外,使用链时不应存在竞争条件。根据 documentation ,它对于不同的和共享的对象是线程安全的。

关于c++ - strand.post 和 strand.wrap 的性能区别是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14413054/

相关文章:

c++ - socket.connect 和 boost::asio::connect 之间的区别

c++ - 如何每 200 秒使 io_service 发布特定功能?

boost::asio 发送数据比通过 TCP 接收数据更快。或者如何禁用缓冲

c++ - 在 C++11/14 中说 "foo not in {bar, baz}"的漂亮方式

c++ - MFC:在运行时扩展

c++ - 为什么我在一种情况下会收到带有字符串文字的弃用转换警告,而在另一种情况下却不会?

performance - C++ : Best text accumulator

c++ - POSIX C/C++ 日志文件(VEX V5 大脑)

c++ - Boost::uBLAS 与 Eigen

c++ - boost序列化中的编译错误, undefined reference