gpt4 book ai didi

c++ - 异步函数调用的参数生命周期

转载 作者:行者123 更新时间:2023-11-30 03:51:09 24 4
gpt4 key购买 nike

Herb Sutter 在 GotW #91 Solution: Smart Pointer Parameters状态 ”由于结构化的生命周期,被调用函数的生命周期是调用函数的调用表达式的严格子集。”这是否适用于异步函数调用?

void myFunc(Bar * arg);
...
auto bar = new Bar;
std::thread t1(myFunc,bar);
delete bar;
join t1;

我假设在这种情况下,删除 bar 可能会使传递给线程 t1 上的 myFunc 的参数无效。

最佳答案

1) 在这里,您将一个指针传递给t1 的构造函数,因此所有与生命周期相关的结构化语句仅适用于该指针,而不适用于它指向的对象.

2) 这里没有异步函数调用 - 你正在调用一个 std::thread ctor 并且所有结构化的生命周期语句只适用于 ctor 而不是它最终会产生的副作用调用 myFunc。

关于c++ - 异步函数调用的参数生命周期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31435424/

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