【问题标题】:How do memory fences/barriers among threads interact with fences/barriers in other threads?线程之间的内存栅栏/屏障如何与其他线程中的栅栏/屏障交互?
【发布时间】:2021-03-19 12:28:08
【问题描述】:

不同线程中内存栅栏的交互是什么?

更具体地说,线程中的内存栅栏是否仅阻止线程内指令的重新排序,或者线程之间存在同步,例如一个线程等待直到另一个线程中达到相应的栅栏?如果多个线程具有相同类型的栅栏并且多个线程具有成对的栅栏,会发生什么情况?什么类型的栅栏需要在线程之间配对,它们是如何使用的?如果带有内存栅栏的代码以单线程方式运行会产生什么影响?

【问题讨论】:

标签: multithreading memory memory-barriers barrier


【解决方案1】:

内存屏障与 标签完全不同。

内存屏障仅对本地内核自己对一致共享内存的访问进行排序,因为这就是恢复顺序一致性所需的全部内容。与其他线程/内核没有直接交互。

如果您想要线程之间的同步,请使用释放/获取顺序。 https://preshing.com/20120913/acquire-and-release-semantics/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-09-23
    • 2019-01-19
    • 2014-05-29
    • 2011-04-20
    • 2012-07-19
    • 2016-03-29
    • 1970-01-01
    • 2014-03-06
    相关资源
    最近更新 更多