我已經編寫了代碼來計算使用Runge-Kutta方法的大量耦合主方程的動力學。代碼包含很多for循環,每個步驟都是獨立的。我打算使用Grand Central Dispatch來加速該計劃。我以我在http://www.macresearch.org/cocoa-scientists-xxxi-all-aboard-grand-central找到的一個例子爲基礎進行了嘗試。我的代碼和macresearch上的例子都不能在我的機器上編譯(MacOSX 10.6.8 Xcode 4.0.2)。因此,這裏是我的代碼:如何從dispatch_apply(GCD)循環寫入數組?
...
double values[SpaceSize], k1[SpaceSize];
for (int t=1 ; t<Time ; t++) {
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
//k1
for (int k=0 ; k<SpaceSize ; k++) values[k]=Concentration[k][t-1];
dispatch_apply(SpaceSize, queue,
^(size_t k) {
k1[k]=h * derives(values, SpaceSize, k); //<--error
}
);
...
它打破了錯誤:
Semantic Issue: Cannot refer to declaration with a variably modified type inside block
我試着用載體代替陣列(值,K1),但後來我得到另一個錯誤消息,而不是:
Semantic Issue: Read-only variable is not assignable
這就是我被卡住的地方,並不真正知道那些錯誤信息試圖告訴我什麼。我花了很長時間尋找並詢問是否有人可以提供幫助。我會非常感謝提示或更好的方法來解決這個問題。
非常感謝!這似乎解決了這個問題! – Jofro