假設您有一個函數來計算大數組中值的出現次數。您希望通過讓每個線程統計它自己的數組部分中的出現次數,然後將結果添加到一起來多線程化該函數。我們可以假設每個線程都有一個唯一的等級(從0到N-1),並且每個線程都會在大約同一時間調用該函數。例如爲:多線程函數可以使用靜態數組在線程之間共享數據嗎?
int count[N]; // global array
int countOccurences()
{
count[rank] = /* count occurences in one part of the array */
// wait until all other threads reached this point
int total = 0;
for (int i=0; i<N; i++)
total += count[i];
return total;
}
問題是,在上面的例子中,可以予移動count
數組的countOccurences()
主體作爲一個靜態變量?我不需要它存在於函數體外的任何地方:線程之間會共享靜態數組嗎?
對不起,我不完全在問題中明確。 `countOccurences()`已經在線程函數中。 – suszterpatt 2011-02-12 18:37:58