Mam napisany kod do obliczania dynamiki dużego zestawu sprzężonego wzoru podstawowego za pomocą metody Runge-Kutta. Kod zawiera wiele pętli for, w których każdy krok jest niezależny. Zamierzam użyć Grand Central Dispatch do przyspieszenia programu. Oparłem moją próbę na przykładzie, który znalazłem pod adresem http://www.macresearch.org/cocoa-scientists-xxxi-all-aboard-grand-central. Ani mój kod, ani przykład na Macresearch nie są kompilowane na moim komputerze (MacOSX 10.6.8 Xcode 4.0.2). Więc tutaj jest mój kod:Jak napisać do tablicy z pętli 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
}
);
...
Łamie z błędem:
Semantic Issue: Cannot refer to declaration with a variably modified type inside block
Próbowałem wymiany tablic (wartości K1) z wektorami, ale potem się kolejny komunikat o błędzie zamiast:
Semantic Issue: Read-only variable is not assignable
To tutaj utknąłem, nie bardzo wiedząc, co te komunikaty o błędach próbują mi powiedzieć. Spędzam trochę czasu na wyszukiwaniu i pytaniu, czy ktoś może pomóc. Byłbym bardzo wdzięczny za wskazówki lub lepsze sposoby rozwiązania tego problemu.
Wielkie dzięki! To wydaje się naprawić problem! – Jofro