中的屏障(DSB,DMB,ISB)的實際使用情況我瞭解,DSB,DMB和ISB是防止重新排序指令的障礙。 我也可以爲他們每個人找到很多非常好的解釋,但很難想象我必須使用它們的情況。ARM
另外,從開源代碼中,我時常看到這些障礙,但很難理解它們爲什麼被使用。只是一個例子,在Linux內核3.7 tcp_rcv_synsent_state_process功能,有一個線如下:
if (unlikely(po->origdev))
sll->sll_ifindex = orig_dev->ifindex;
else
sll->sll_ifindex = dev->ifindex;
smp_mb();
if (po->tp_version <= TPACKET_V2)
__packet_set_status(po, h.raw, status);
其中smp_mb()基本上是DMB。 你能否給我一些真實的例子?這將有助於更多地瞭解障礙。
這個問題是一個最近的例子:http://stackoverflow.com/q/15003405/1163019 – auselen 2013-03-19 07:17:17
Cortex程序員指南也有一個障礙(11.2)的部分。 http://infocenter.arm.com/help/topic/com.arm.doc.den0013c/index.html – auselen 2013-03-19 07:21:43
我仍然投票結束,因爲這是一個非常廣泛的問題。 – auselen 2013-03-19 07:22:01