gpt4 book ai didi

linux - 具有局部变量的线程函数是否需要 pthread_mutex_lock?

转载 作者:太空宇宙 更新时间:2023-11-04 11:17:21 27 4
gpt4 key购买 nike

一个普遍的事实是,pthread_mutex_lock( ) 应该始终应用于线程函数中使用的全局变量和静态变量。线程函数中的局部变量怎么样?

在哪些用例中,线程函数内的局部变量应该被锁定或应该始终被锁定?

例子:

int func( void )
{
int var;
var++; // What are the usecases in which this should be locked?

}

pthread_create(&threadid1, NULL, func, NULL);
pthread_create(&threadid2, NULL, func, NULL);

最佳答案

不,即使您使用相同的函数启动多个线程,也可以从您的线程安全地访问堆栈变量。

每个线程都有自己的堆栈,因此每次启动它时都会有一个单独的“int var”实例。

当然,通常的限制确实适用。如果您以某种方式跨多个线程共享“var”,您仍然需要保护它,但堆栈变量没有隐式或自动共享。

关于linux - 具有局部变量的线程函数是否需要 pthread_mutex_lock?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20262968/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com