c - pthreads 中的全局变量

zan*_*man 5 c scope pthreads

假设我在文件 function.c 中定义了一个函数,并在 main.c 中创建了多个 pthread 来执行 function.c 中的函数。

如果在function.c中,我定义了一个全局变量,例如int foo;

然后,我的问题是,每个线程是否都有自己的变量“foo”实例,还是共享一个“foo”?

Zby*_*000 3

他们共享一个foo变量。全局变量在每个进程中始终仅存在一次,并且通常受互斥体保护以避免并发访问。

从 C11 开始,您可以使用 thread_local 将变量声明为每个线程的本地变量:

#include <threads.h>
...
thread_local int perThreadInt;
Run Code Online (Sandbox Code Playgroud)