pthread_mutex_lock是如何确保被保护的共享变量(包括缓存)即时被其他线程看到的?...

缓存一致性与内存屏障
本文探讨了在多线程编程中,如何确保缓存数据的一致性。特别是在使用pthread库进行互斥锁操作时,解释了内存屏障(memory barrier)的作用,确保在解锁前缓存数据能被正确刷新到内存,从而使其他线程可以读取到最新的数据状态。

问题:

pthread_mutex_lock(mutex);
count += 1;
pthread_mutex_unlock(mutex);

上述示例代码中,count和mutex本身没有关系,而在cpu和memory之间会有cache,这段代码是如何保证mutex被解锁前count相关的cache能够刷新到memory中,被其他线程的lock后可以看到?

解答

是通过内存屏障(memory barriar)。

Programming with POSIX Threads - 3.4 Memory visibility between threads:

转载于:https://my.oschina.net/chuqq/blog/3022854

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值