假设我在文件function.c中定义了一个函数,并在main.c中创建了多个pthread来执行函数function.c。c - pthreads中的全局变量
如果在function.c中,我定义了一个全局变量,例如int foo;
然后,我的问题是,每个线程都有自己的这个变量“foo”的实例还是共享一个“foo”?
假设我在文件function.c中定义了一个函数,并在main.c中创建了多个pthread来执行函数function.c。c - pthreads中的全局变量
如果在function.c中,我定义了一个全局变量,例如int foo;
然后,我的问题是,每个线程都有自己的这个变量“foo”的实例还是共享一个“foo”?
它们共享一个foo
变量。全局变量每个进程始终只存在一次,通常受互斥锁保护,以避免并发访问。
由于C11可以使用thread_local声明变量为每个线程本地:
#include <threads.h>
...
thread_local int perThreadInt;
如果一个变量被定义为函数内部的局部静态变量,每个pthread都有它自己的这个变量的实例么? – zanyman
@RaymondZhang:局部静态变量几乎与全局变量相同,只是能见度有限。所以不,它也会被所有主题共享。 –
全球var是一个变种。其范围是整个* .c文件中..他们可以入店,无论他们在同一个文件中使用...
线程是多线程处理(或一个多线程文件)lieghtweight过程,但 所有线程协同工作对于相关的过程,以便提供不同势-2的功能.. ,因为他们不是独立过程,使他们在一个全球性的方式访问全局变量...在并行线程定义
局部变量是在本地入店它们被声明的线程。
任何线程都不知道另一个线程的局部变量。
全局变量在所有线程之间共享。 – kaylum