线程函数中的局部变量是否根据线程有单独的副本?

Jeegar Patel:

我在这样的一个函数中声明了一些局部变量:

void* thread_function (void* parameter)
{
   struct parameter * thread_data = (struct parameter *)parameter;
   char buffer[20];
   int temp;
}

在这里,如果我创建了两个线程,然后在一个线程中更新了buffer&temp,那么它将影响其他线程吗?

我的意思是,如果有两个线程,那么所有局部变量都将有两个副本吗?

编辑:那么在这种情况下,我需要使用线程特定的数据。我的意思是pthread_setspecific和所有这样的东西

Arnaud Le Blanc:

这些变量在堆栈上分配,并且每个线程都有自己的堆栈:这些变量是每个线程专用的(它们不共享)。(有关更多详细信息,请参见此答案。)

例如,如果将thread_data分配给全局指针,则其他线程将能够通过全局指针访问thread_data。

特定于线程的数据(例如pthread_setspecific)用于创建全局变量,但仍特定于每个线程(不共享):它们是特定于线程的全局变量。

当您需要全局变量,但又不想在线程之间共享它们时,需要使用特定于线程的变量。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Java

Java中是否有线程组局部变量?

来自分类Dev

在OpenMP中重置线程局部变量

来自分类Java

什么是线程中的局部变量?

来自分类Dev

Ruby 中的线程局部实例局部变量

来自分类Dev

在闭合中创建该类型的线程局部变量的“使用外部函数的类型变量”

来自分类Dev

线程例程函数中未调用局部变量析构函数?

来自分类Dev

是否可以在Node中使用“线程”局部变量?

来自分类Dev

线程套接字函数弄乱了局部变量

来自分类Linux

在Linux上线程局部变量的访问速度有多快

来自分类Dev

仅具有局部变量的实例方法的线程安全

来自分类Dev

具有局部变量的全局方法线程安全

来自分类Java

为什么局部变量在Java中是线程安全的

来自分类Java

静态方法和线程安全中的局部变量

来自分类Dev

JVMTI Agent中的访问线程局部变量

来自分类Dev

可以从Scala的子线程中更改局部变量

来自分类Dev

局部变量是线程安全的吗?

来自分类Linux

线程局部变量和fs段

来自分类Java

是局部变量方法的线程共享?

来自分类Dev

Kotlin局部变量线程安全

来自分类Dev

线程局部变量的初始化

来自分类Dev

静态局部变量的线程安全增量

来自分类Dev

线程安全局部变量

来自分类Dev

线程共享局部变量吗?

来自分类Dev

多线程共享局部变量

来自分类Dev

Java局部变量线程安全

来自分类Dev

是否有可能在函数体中引入局部变量?

来自分类Dev

子函数中是否可以使用局部变量?

来自分类Dev

在匿名线程的上下文中访问局部变量是否安全?

来自分类Dev

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