c - pthreads中的全局变量

时间:2017-02-13 03:21:04

标签: c scope pthreads

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

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

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

2 个答案:

答案 0 :(得分:3)

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

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

#include <threads.h>
...
thread_local int perThreadInt;

答案 1 :(得分:2)

全局变量是变量。其范围在整个* .c文件中......无论它们在同一文件中使用的哪个位置都可以访问...

线程是非常重要的过程但是       在多线程进程(或多线程文件)所有线程协同工作,为相关进程提供diffrent-2功能。 所以,因为他们不是独立过程所以他们以全球方式访问全局变量...

pthreads中定义的局部变量在声明它们的线程中是本地可访问的。

任何线程都不知道另一个线程的局部变量