zj844134655 2015-09-17 03:54 采纳率: 0%
浏览 1904
已结题

单处理器中,多进程或多线程之间是否需要使用内存屏障

在看Linux内核内存屏障时,文章中写道“只有在存在多CPU交互或CPU与设备交互的情况下才可能需要用到内存屏障.”,对此表示怀疑,难道单CPU中,两个进程或两个线程间就不需要用了么?

  • 写回答

3条回答 默认 最新

  • oyljerry 2015-09-17 04:53
    关注
     使用LOCK和UNLOCK之后, 一般就不再需要其他内存屏障了(但是注意"MMIO写屏障"章节中所提到的例外).
    

    只有在存在多CPU交互或CPU与设备交互的情况下才可能需要用到内存屏障. 如果可以确保某段代码中不存在这样的交互, 那么这段代码就不需要使用内存屏障. (译注: CPU乱序执行指令, 同样会导致寄存器的存取顺序被打乱, 但是为什么不需要寄存器屏障呢? 就是因为寄存器是CPU私有的, 不存在跟其他CPU或设备的交互.)

    http://blog.csdn.net/michaelcao1980/article/details/21241087

    评论

报告相同问题?

悬赏问题

  • ¥15 矩阵加法的规则是两个矩阵中对应位置的数的绝对值进行加和
  • ¥15 活动选择题。最多可以参加几个项目?
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题
  • ¥20 云服务Linux系统TCP-MSS值修改?
  • ¥20 关于#单片机#的问题:项目:使用模拟iic与ov2640通讯环境:F407问题:读取的ID号总是0xff,自己调了调发现在读从机数据时,SDA线上并未有信号变化(语言-c语言)
  • ¥20 怎么在stm32门禁成品上增加查询记录功能
  • ¥15 Source insight编写代码后使用CCS5.2版本import之后,代码跳到注释行里面
  • ¥50 NT4.0系统 STOP:0X0000007B
  • ¥15 想问一下stata17中这段代码哪里有问题呀