C++ C++;:用IIFE线程初始化静态局部变量是否安全?

C++ C++;:用IIFE线程初始化静态局部变量是否安全?,c++,lambda,thread-safety,iife,C++,Lambda,Thread Safety,Iife,以下代码是线程安全的吗?(使用IIFE初始化静态局部变量。) 对。C++11(及更高版本)保证尝试初始化静态局部变量的多个线程之间没有数据竞争。如果lambda中的代码是线程安全的,那么初始化也将是线程安全的 使用lambda、函数调用或构造函数不会更改初始化的线程安全性。非常类似,可能重复。如果lambda中的代码是线程安全的,是什么意思?——lambda不应该只从到达初始值设定项的第一个线程调用吗? int MyFunc(){ static int Val = ([]() {

以下代码是线程安全的吗?(使用IIFE初始化静态局部变量。)

对。C++11(及更高版本)保证尝试初始化静态局部变量的多个线程之间没有数据竞争。如果lambda中的代码是线程安全的,那么初始化也将是线程安全的


使用lambda、函数调用或构造函数不会更改初始化的线程安全性。

非常类似,可能重复。如果lambda中的代码是线程安全的,
是什么意思?
——lambda不应该只从到达初始值设定项的第一个线程调用吗?
int MyFunc(){

static int Val = ([]()
   {
   return 1 + 2 + 3 + 4; // Real code is more complex, but thread-safe
   })();

return Val;

}