2013-07-21 20 views
2

ISO/IEC 14882:2011的第1.10.11節(C++ 11)定義了評估之間的「線程間發生之前」關係,其與第1.10.12節「發生之前」關係的唯一區別在於A發生在B如果A在B之前被排序但是不足以支持B之前的線程間發生。爲什麼「線程間發生之前」足夠重要以保證單獨的定義?爲什麼在ISO/IEC 14882:2011中定義了一個獨特的「線程間發生之前」關係?

在§1.10.11的說明認爲,「線程間發生之前」不允許評估其唯一關係部分「前序」

允許「線程間發生之前」要過渡關閉

這是什麼意思?我知道什麼是傳遞閉包,而且我知道一套關於某個操作的閉包意味着什麼,但我從來沒有聽說過「過渡閉合」,Google和環境都沒有讓我失望。

回答

5

「之前發生的線程間」純粹是爲了說明而定義的。注意「之前發生的事情」被定義爲「之前或之前發生線程之間發生的順序」,而「線程之間發生之前」的概念不用於其他任何事情。 「之前排序」描述​​在同一線程上進行的評估,「線程間發生之前」適用於在不同線程上進行的評估; 「之前發生」將兩者結合起來。

+0

啊,有道理。任何想法「過渡性關閉」的評論意味着什麼?大概我應該問一個單獨的問題。 –

+0

@SheaLevy你現在對這個問題有答案嗎?如果沒有,我會創建一個新問題並在此發佈鏈接,因爲我也對此主題感興趣。 – splotz90

0

的「傳遞地關閉」的話只是意味着關係是可傳遞:如果A線程間之前B和B間線程C-之前發生發生,則A線程間C.

該屬性之前發生如果由於第一次排除(序列以「之前依賴性排序」,後面跟着「之前排序」),那麼單獨「之前排序」被認爲是「線程之前發生」。

這也意味着「之前發生」不是傳遞性的;如果A發生在B和B發生在C之前,它不一定跟在A發生在C之前。

相關問題