公用區

介紹

公用區公用區
並行調試中遇到一個麻煩的問題,即COMMON變數的私有化。在主程式DOLOOP並行區中,如果要調用子程式,則系統默認子程式里定義的所有變數是執行緒私有的,但是我需要一些主程式和子程式的公用區變數也似有,如果簡單地用Private指令來指定,很可能會出現錯誤混亂,特別是數據量很大時,各執行緒之間會出現競爭(DataRace),輸出結果要么是沒有初值,要么就是被其他執行緒更改後的值。這個問題困惑我了很長時間,通過搜尋調研,終於找到了一個解決辦法:執行緒私有指令ThreadPrivate。它可以把一個全局公用變數分別複製到每一個執行緒,各執行緒之間保持獨立,不會互相干擾。它必須緊接COMMON塊進行聲明,如果還要求各個執行緒得到COMMON變數的初值,則還要結合Copyin指令使用。

並行調試中遇到一個麻煩的問題,即COMMON變數的私有化。在主程式DOLOOP並行區中,如果要調用子程式,則系統默認子程式里定義的所有變數是執行緒私有的,但是我需要一些主程式和子程式的公用區變數也似有,如果簡單地用Private指令來指定,很可能會出現錯誤混亂,特別是數據量很大時,各執行緒之間會出現競爭(DataRace),輸出結果要么是沒有初值,要么就是被其他執行緒更改後的值。這個問題困惑我了很長時間,通過搜尋調研,終於找到了一個解決辦法:執行緒私有指令ThreadPrivate。它可以把一個全局公用變數分別複製到每一個執行緒,各執行緒之間保持獨立,不會互相干擾。它必須緊接COMMON塊進行聲明,如果還要求各個執行緒得到COMMON變數的初值,則還要結合Copyin指令使用。

相關搜尋

熱門詞條

聯絡我們