Ez a c# kód miért írja a result változóra,hogy "use of unassigned variable" mikor én inicializálom használat előtt?
Itt deklarálom:
KeyValuePair<int, bool>[] result;
Itt inicializálom:
Parallel.Invoke(() => result = IsPrime(input));
Itt írja a hibát:
foreach(KeyValuePair<int, bool> k in result)
Nem értem miért volt rá szükség de ha null al inicializálom is a deklarációt akkor már jó.
De most más problémám van.
Miért lassabb a többszálú megoldás mint a sima. Teszteltem és lassabb.
Már értem a parallel.invoke arra van hogy párhuzamosan futtasson egyszerre több metódust én meg csak egyet adok meg neki így aztán ennek semmi értelme ugyanis a metódusok tartalma továbbra is egy szálon fog futni csak azon a másik egy szálon amin a metódus fut.
E helyett a Parallel.for az ami a tényleges tartalmat több szálon futtatja így már brutális a teljesítmény különbség.
Megvilágosultam. Thx me!
"Nem értem miért volt rá szükség de ha null al inicializálom is a deklarációt akkor már jó."
Mert a forddíó nem tudja ellenőrizni, hogy a megadott lambda bármikor is lefut-e... annyit néz, hogyaz adott metódusban van-e neki korábban érték adva biztosan. Persze az ember látja, hogy a Parallel.Invoke belül be fogja állítani a megadott lambda megívásával, de ezt nem tudja a fordító.
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!