gpt4 book ai didi

multithreading - boost::io_service::strand性能

转载 作者:行者123 更新时间:2023-12-03 13:21:54 25 4
gpt4 key购买 nike

我正在使用boost::io_service构建并行执行计算作业的线程池。有些作业不允许同时运行,我认为这是boost::io_service::strand的理想应用。作为,执行顺序作业的顺序与无关,我要问,应该使用两种使用链的方式中的哪一种:

strand.post(bind(jobA...));

或者
io_service.post(strand.wrap(bind(jobA...)))

如果我正确理解boost文档,则第一个版本将确保作业以发布时的顺序执行,而第二个版本则不能提供任何保证。

我的问题是:哪一个更快?

最佳答案

您可以互换使用上述两种方法,这将导致相同的结果。我非常怀疑是否存在性能差异,但是如果存在性能差异,则在两个函数(strand.postio_service.post)调用的开销中,但在io_service的实际执行中却没有,因为它们在后台都执行相同的操作,并且具有相同的执行路径。

我猜想io_service.post()所需的时钟周期要少一些,但与此同时,我也猜想这种微优化在您的应用程序中与太阳辐射的干扰以及CPU必须重新执行指令一样引人注目。我什至不知道那是否是一个真实的现象,但是当试图提出一种冗长的方式说“别担心”时,这听起来很酷。如果实际上存在性能差异,请共享基准。 *对自己注视*

关于multithreading - boost::io_service::strand性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6386682/

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