【发布时间】:2015-04-28 13:39:11
【问题描述】:
我试图了解内存障碍,但偶然发现了以下维基百科链接 http://en.wikipedia.org/wiki/Memory_barrier 这很好地解释了这个概念,但如果这在我们有 mutex() 锁定内存部分的系统中真的很有帮助的话。
采用与维基百科中提到的相同的代码,下面的方法是否可以解决使用互斥锁的问题?
[注意:函数名称不特定于任何编程语言,只是为了简单起见]
处理器 #1
mutex_lock(a)
while (f == 0);
print x;
mutex_unlock(a)
处理器 #2
mutex_lock(a)
x = 42;
f = 1;
mutex_unlock(a)
【问题讨论】:
-
如果处理器 #1 先获取锁,该示例将死锁,因为此时处理器 #1 将永远旋转,而处理器 #2 在尝试获取锁时会卡住。
标签: memory linux-kernel mutex memory-barriers