mta*_*all 6 c++ parallel-processing multithreading local-variables thread-safety
用于本地数组和与线程交互的C++ 98和C++ 11内存模型是什么?
我不是指C++ 11 thread_local关键字,它与全局变量和静态变量有关.
相反,我想知道在编译时分配的数组的线程的保证行为是什么.编译时我的意思是"int array [100]",这与使用new []关键字的分配不同.我不是指静态变量.
例如,假设我有以下结构/类:
struct xyz { int array[100]; };
Run Code Online (Sandbox Code Playgroud)
以及以下功能:
void fn(int x) {
xyz dog;
for(int i=0; i<100; ++i) { dog.array[i] = x; }
// do something else with dog.array, eg. call another function with dog as parameter
}
Run Code Online (Sandbox Code Playgroud)
从多个线程调用fn()是否安全?似乎C++内存模型是:所有本地非静态变量和数组都在堆栈上分配,并且每个线程都有自己的堆栈.这是真的吗(即,这是标准的正式部分)吗?