gpt4 book ai didi

c++ - 理论上,C++ 实现能否并行计算两个函数参数?

转载 作者:IT老高 更新时间:2023-10-28 12:11:11 36 4
gpt4 key购买 nike

给定以下函数调用:

f(g(), h())

由于未指定函数参数的评估顺序(据我所知,在 C++11 中仍然如此),理论上是否可以执行 g() h() 并行?

这种并行化只能在 gh 已知相当琐碎(在最明显的情况下,仅访问其主体的本地数据)的情况下启动,以便不是要引入并发问题,但除了这个限制之外,我看不到任何禁止它的东西。

那么,标准允许吗?即使只是按照 as-if 规则?

(在 this answer 中,Mankarse 断言并非如此;但是,他没有引用标准,并且我对 [expr.call] 的通读没有发现任何明显的措辞.)

最佳答案

需求来自[intro.execution]/15:

... When calling a function ... Every evaluation in the calling function (including other function calls) that is not otherwise specifically sequenced before or after the execution of the body of the called function is indeterminately sequenced with respect to the execution of the called function [Footnote: In other words, function executions do not interleave with each other.].

所以 g() 主体的任何执行都必须与 h() 的求值顺序不确定(即不重叠)(因为 >h() 是调用函数中的表达式)。

这里的关键点是 g()h() 都是函数调用。

(当然,as-if 规则意味着不能完全排除这种可能性,但它绝不应该以可能影响程序可观察行为的方式发生。这样的实现最多只会改变代码的性能特征。)

关于c++ - 理论上,C++ 实现能否并行计算两个函数参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13443532/

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