【发布时间】:2021-08-14 15:08:42
【问题描述】:
我了解到线程共享相同的内存但不共享寄存器。
另一方面,我也读到线程不共享局部变量,这怎么可能?
这不是矛盾吗?
【问题讨论】:
标签: c multithreading memory pthreads
我了解到线程共享相同的内存但不共享寄存器。
另一方面,我也读到线程不共享局部变量,这怎么可能?
这不是矛盾吗?
【问题讨论】:
标签: c multithreading memory pthreads
我还读到线程不共享局部变量,这怎么可能?
同一个进程的线程共享相同的地址空间,并且它们遵循相同的块和函数的作用域规则,所以如果你声明一个全局变量或者你将一个变量作为指针参数传递给线程,这个变量是共享的线程,您需要各种预防措施才能对其进行修改(同步)。
我了解到线程共享相同的内存但不共享寄存器。
线程不共享寄存器,因为每个线程在不同的内核上运行(这是一种简化,因为在现代架构中一个内核可以有多个线程)并且每个内核都有自己的寄存器,因此您需要同步方法来处理这个问题问题。
【讨论】: