Merhaba arkadaşlar;
Dün koşut işlemler dersini okudum ve bugün de biraz örnek yapmaya çalıştım ama hiçbiri derlenemedi. Bunun üzerine acaba ben mi hata yapıyorum diyerek örnek programları derlemeye çalıştım. Yine hiçbiri derlenemedi. Derleyici ile ilgili bir sorun olabilir mi? Aşağıda kodlar ve derleme hatası var.
import std.stdio;
import std.parallelism;
import std.algorithm;
import core.thread;
struct Öğrenci
{
int numara;
int[] notlar;
double ortalamaNot() @property
{
writeln(numara,
" numaralı öğrencinin işlemi başladı");
Thread.sleep(dur!"seconds"(1));
immutable ortalama =
reduce!((a, b) => a + b)(0.0, notlar) / notlar.length;
writeln(numara, " numaralı öğrencinin işlemi bitti");
return ortalama;
}
}
void main()
{
Öğrenci[] öğrenciler;
foreach (i; 0 .. 10) {
/* Her öğrenciye 80'li ve 90'lı iki not */
öğrenciler ~= Öğrenci(i, [80 + i, 90 + i]);
}
auto sonuçlar = taskPool.map!(ö => ö.ortalamaNot)(öğrenciler);
foreach (sonuç; sonuçlar) {
writeln(sonuç);
}
}
Hata:
parallel.d(34): Error: template instance map!(__lambda5) cannot use local '__lambda5(__T4)'
as parameter to non-global template map(functions...)
/usr/local/include/d/phobos2/std/parallelism.d(1974): Error: template instance amap!(__lambda5)
cannot use local '__lambda5(__T4)' as parameter to non-global template amap(functions...)
parallel.d(34): Error: template instance std.parallelism.TaskPool.map!(__lambda5).map!(Öğrenci[])
error instantiating
taskPool.map giriş aralıklarında çalıştığı için her ne kadar dilim kullansak da aralık gerçeklemelerini sundum, yine de hata verdi. Acaba sorun nerede?
--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]