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

我已经在一个函数中声明了一些局部变量:
void* thread_function (void* parameter)
{
   struct parameter * thread_data = (struct parameter *)parameter;
   char buffer[20];
   int temp;
}

这里如果我创建了两个线程,那么在一个线程中,如果缓冲区& temp是否更新会影响其他线程?

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

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

解决方法

这些变量分配在堆栈上,每个线程都有自己的堆栈:这些变量对每个线程都是私有的(它们不是共享的). (详见 this answer)

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

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

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

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...