ISO/IEC 14882:2011 (C++ 11) 的 § 1.10.11 定义了求值之间的“线程间发生之前”关系,其与 § 1.10.12 中“发生之前”关系的唯一区别是 A 发生在 B 之前,如果 A 排在 B 之前,但这对于 A 线程间发生在 B 之前是不够的。为什么“线程间发生在之前”足够重要以保证单独定义?
§ 1.10.11 中的注释表明“线程间发生在之前”不允许评估其唯一关系在部分“之前排序”
to permit “inter-thread happens before” to be transitively closed
这是什么意思?我知道什么是传递闭包,我知道集合在某些操作中关闭意味着什么,但我从未听说过“传递关闭”,Google 和上下文都让我失望。
最佳答案
“Inter-thread happens before”纯粹是为了说明而定义的。请注意“发生在之前”是如何定义为“顺序发生在之前或线程间发生在之前”,并且“线程间发生在之前”的概念不用于其他任何事情。 “Sequenced before”描述发生在同一个线程上的求值,“inter-thread happens before”适用于发生在不同线程上的求值; “发生在之前”结合了两者。
关于c++ - 为什么在 ISO/IEC 14882 :2011? 中定义了一个独特的 "inter-thread happens before"关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17768718/