gpt4 book ai didi

pthreads - 进程中的所有线程共享相同的数据是什么意思?

转载 作者:行者123 更新时间:2023-12-02 18:55:29 26 4
gpt4 key购买 nike

我的教科书上写着:

All threads within a process have access to the same data (share)

但是每个线程都有自己的堆栈,这意味着局部变量不被共享。那么什么样的数据线程可以共享。

更新:

我发现每个线程都可以共享全局变量,这让我很困惑,我学到的全局全局变量是静态堆栈,它不应该被共享,因为每个线程都有自己的堆栈。

最佳答案

首先,全局变量和静态变量是共享的。

其次,可以通过全局变量中的指针(或通过...的指针)访问来自 malloc 的内存。

第三,可以通过全局变量中的指针(或通过...的指针)访问一个线程堆栈中的内存。

确实,所有内容始终都是共享的,但并非所有内容都是可访问的。线程 A 可以访问线程 B 的堆栈,但它不会有指针来执行此操作,除非线程 B 执行类似将其堆栈中某些内容的地址分配给全局的操作(不要这样做)或者您正在执行某些操作您可以在其中检查线程的详细信息并深入了解它们的堆栈(如果您这样做,您对 pthreads 实现机制的了解比我要多得多*,所以我不会告诉您不要这样做这样做,但通常这不是一件容易做的事情)。

大多数情况下,您只需要担心全局和静态,并且可以认为仅在本地处理的任何内容都是线程安全的,但是一旦您可以从前者到达后者,那么这一点就会消失。

*实际上,我对此知之甚少,并且主要基于其他语言的线程知识。实际上,这是一种通用的线程事物,而不是特定于 pthreads 的事物,除了某些其他语言甚至不会让您陷入从全局引用堆栈内存的陷阱。

关于pthreads - 进程中的所有线程共享相同的数据是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11847593/

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