Pthread同步线程场景下:计算结果是否会暂存后写入共享内存?
问题解答
- 一句话说清:线程1的运算结果会不会先存临时缓冲区,完全看你自己写的代码,和锁机制没关系
- 具体拆解:
- 要是你写的代码是「先算完加法,把结果存到线程自己的变量里,再去抢锁写共享内存」——那这个结果肯定会存在线程1的私有临时区域(比如栈上的变量,或者CPU寄存器,看编译器优化),等抢到锁之后再往共享内存里写。毕竟线程自己的栈和寄存器是独占的,上下文切换时CPU会帮你保存这些状态,不会丢。
- 要是你写的代码是「先抢锁,抢到了再做加法计算」——那线程1会直接卡在抢锁的地方,根本没机会做计算,自然也不存在什么临时结果。
- 额外提醒:互斥锁这类同步工具,管的只是共享内存的访问权限,管不着线程内部的计算逻辑和临时数据。线程自己的私有数据本来就和其他线程无关,哪怕它因为等锁被挂起,这些数据也会被好好保存着。
内容的提问来源于stack exchange,提问作者Akbar294
相关产品推荐
相关产品推荐

