Tôi đã viết mã để tính toán động lực của một tập hợp lớn phương trình tổng thể kết hợp bằng phương pháp Runge-Kutta. Mã chứa rất nhiều vòng lặp, trong đó mỗi bước độc lập. Tôi định dùng Grand Central Dispatch để tăng tốc chương trình. Tôi dựa trên nỗ lực của tôi trên một ví dụ tôi tìm thấy tại http://www.macresearch.org/cocoa-scientists-xxxi-all-aboard-grand-central. Cả mã của tôi lẫn ví dụ về biên dịch macresearch trên máy của tôi (MacOSX 10.6.8 Xcode 4.0.2). Vì vậy, đây là mã của tôi:Làm thế nào để viết vào một mảng từ một vòng 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
}
);
...
Nó phá vỡ với lỗi:
Semantic Issue: Cannot refer to declaration with a variably modified type inside block
tôi đã cố gắng thay thế các mảng (giá trị, k1) với một vectơ, nhưng sau đó tôi nhận được một thông báo lỗi thay vì:
Semantic Issue: Read-only variable is not assignable
Đó là nơi tôi bị kẹt, không thực sự biết những thông báo lỗi nào đang cố gắng nói với tôi. Tôi dành một chút thời gian tìm kiếm và hỏi xung quanh nếu có ai có thể giúp đỡ. Tôi sẽ rất biết ơn những lời khuyên hay cách tốt hơn để giải quyết vấn đề này.
Cảm ơn rất nhiều! Điều đó dường như để khắc phục vấn đề! – Jofro