2014-07-15 63 views
2

this指針總是在OpenMP中共享嗎?OpenMP和C++:這個指針

編譯器不會抱怨下面的代碼,儘管default(none)

#pragma omp parallel for default(none), shared(n) 
for (SInt i = 0; i < n; ++i) 
{ 
    f(i, this); // f is some function. 
} 

回答

2

OpenMP標準定義了變量在你的代碼中引用的數據共享屬性的規則。總之,根據C++標準草案(n3242 9.3.2)this不是可變的,但一個prvalue表達(重點煤礦):

在非靜態的(9.3)成員函數的主體中, 這個關鍵字是 一個前值表達式它的值是調用該函數的對象的地址 。在類別X的成員函數 中的這種類型是X *。如果成員函數被聲明爲const,則 的類型爲const X *,如果成員函數聲明爲volatile,則其 類型爲易失性X *,如果成員函數聲明爲 const volatile,則類型這是常量不穩定的X *。