Mik a tipikus hibák párhuzamos programozásban?
Tipikusan elkövethető hibák és ezek elkerülése / megoldása érdekel.
Személyes tapasztalatból, vagy tanult anyagból.
Ilyen a deadlock.
De töméntelen mennyiségű anyag van a neten, olyan nincs, hogy nem találtad meg.
Ez tényleg bonyolultabb kérdés, így csak felületesen pár, lehetséges megoldással:
1. két (vagy több) szálból párhuzamosan akarod elérni ugyanazt az erőforrást. Ekkor ha egyszerre próbálnak meg hozzáférni, és legalább az egyik írni akarja, megjósolhatatlan lesz a végeredmény. Lehetséges megoldások: atomi műveletek, szinkronizálás.
2. háttérszálból akarod módosítani a GUI-t. Ezt nem szokta szeretni egyik rendszer sem, legtöbbször elszáll a programod. Megoldás: csak GUI szálból férsz hozzá a kezelőfelülethez.
3. Beállok én is a sorba: deadlock. Ez csak szinkronizálás esetén alakulhat ki, mégpedig akkor, ha két szál párhuzamosan akar hozzáférni olyan erőforráshoz, amelyet a másik birtokol. Szinkronizáláskor általános esetben blokkolódik a szál addig, amíg fel nem szabadítják az erőforrást, de mivel ekkor mindkettő szál a másikra vár, ez érhetően sosem fog bekövetkezni. Lehetséges megoldások: csak megadott sorrendben foglalnak le erőforrást (nem mindig járható út), vagy ha adott környezet lehetőséget biztosít rá, timeout-ot adsz meg a lock-nak (és ha elhasal, minden erőforrást felszabadítasz, amit adott szál foglal, és másnak szüksége lehet rá).
Első sorban a tapasztalatokra voltam kíváncsi, amit ugyan elkerülnek azok, akik tanulták innen-onnan az anyagot, mégis belecsúsznak a hibába.
Én egy legacy kódban találkoztam az randevúval és a tranzakció kezelés helyetti lockolással. Érdekelt, hogy melyik hibával találkoztatok már "késznek" mondott programban.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, 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!