gpt4 book ai didi

multithreading - “reads before reads”在内存排序中是什么意思?

转载 作者:行者123 更新时间:2023-12-03 13:09:25 26 4
gpt4 key购买 nike

让我们考虑一下这句话(Total Store Ordering):

reads are ordered before reads, writes before writes, and reads before writes, but not writes before reads.



我想我几乎掌握了以下基本知识:
  • 每个线程都有其自己的程序顺序(编写时的代码)
  • 通常,CPU可能会重新排序指令,我们必须限制它以排除不正确的排序
  • CPU可能还会对内存加载和存储进行重新排序,因此我们也必须对它们进行约束
  • 当前的硬件实现具有像mfence这样的“序列化指令”,所有线程都将调用它们来解决这两个问题。
  • 硬件通常只允许一个脏缓存,因此所有有关刷新该缓存的内容:
  • 存储线程刷新脏缓存
  • 加载线程请求和阻止,直到没有脏缓存
  • 内核开发人员关心除CPU访问内存以外的设备,但我不关心。

  • 但是我仍然无法理解“先读后读”的真正含义。这可能意味着在那些体系结构中存在隐式障碍和序列化指令,但我无法真正说出。

    最佳答案

    我非常确定,在该死的希腊大学的操作系统类(class)中,我听到的是教授的声音。 :)由于没有人回答,因此我将尝试回答。

    假设您是操作系统,每个线程/程序都想执行读取和写入操作。现在,由于我们正在谈论多线程,因此一个线程可能会读取另一个线程已写入的内容,例如变量的值。

    现在,如果线程1想要执行一个内存地址x的读取,而线程2也想要执行一个读取的x,那么可以允许他们以任何顺序读取x。我想这就是它的意思!

    希望它能以某种方式有所帮助,因为我知道这不是一个人可以提供的最佳答案! :/

    关于multithreading - “reads before reads”在内存排序中是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39735796/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com