执行和完成方法

时间:2019-04-06 12:17:52

标签: c++

这是一个非常幼稚的问题,如果我使用错误的术语,请原谅我的无知。

如果我有摘要中的一系列说明,

bool methodComplete = false;
methodComplete = doSomeMethod(someParam, etcParam); //long & complex method that returns true
if (methodComplete)
   doSomeOtherMethod();

方法doSomeMethod()将在执行if (methodComplete)之前完成执行吗?

或者如果我想保证它已经完成,这是异步模式的情况吗?

2 个答案:

答案 0 :(得分:2)

语言规范定义了从用户/程序员的角度来看程序的有效行为。因此,是的,您可以假设程序的行为如下:

  • 它计算doSomeMethod
  • 它将结果存储在methodComplete
  • 它执行if子句

也就是说,某些优化可能导致代码提前执行,请参见Speculative execution

答案 1 :(得分:1)

  

在评估doSomeMethod()之前,方法if (methodComplete)会完成执行吗?

*

  

或者如果我想保证它已经完成,这是异步模式的情况吗?

仅在进行并行计算时。


*) 如果您的代码正在并行执行,则可能为no。