Konkurentné programovanie - 5. seminár z 27.9.2024
Preber si túto prednášku so svojou AI
Skopíruj pripravený podklad a vlož ho do ChatGPT, Claude alebo inej AI — bude ťa učiť alebo skúšať len z tejto prednášky.
Zhrnutie prednášky
Seminár z Konkurentného programovania sa venuje efektívnej synchronizácii vlákien pri paralelnom spracovaní textu a súborov. Najprv sa dokončuje implementácia počítania slov pomocou ConcurrentHashMap<String, AtomicInteger>, kde sa atomicita vkladania a inkrementácie rieši metódou putIfAbsent namiesto get, aby sa predišlo súbehu (race condition) pri súčasnom zápise viacerých vlákien. Následne sa preberá paralelizácia rekurzívneho prehľadávania adresárového stromu (searcher), kde sa namiesto priradenia vlákna na každý podstrom používa spoločný rad úloh (BlockingQueue) s adresármi, ktoré si jednotlivé worker vlákna postupne preberajú a dopĺňajú. Na korektné ukončenie výpočtu, keď je rad úloh prázdny a všetky vlákna čakajú, sa využíva technika otrávených pilulk (poison pill) v kombinácii s atomickým počítadlom nespracovaných adresárov.
- ConcurrentHashMap<String, AtomicInteger>
- Atomická operácia putIfAbsent namiesto get+put
- Atomický inkrement počtu výskytov slova
- Rekurzívne prehľadávanie adresárového stromu (searcher)
- Rad úloh (BlockingQueue) namiesto vlákna na podstrom
- Worker vlákna preberajúce úlohy z radu
- Otrávené pilulky (poison pill) na ukončenie vlákien
- Atomické počítadlo nespracovaných adresárov
Zhrnutie pripravené s pomocou AI z prepisu videa.
nechodím na prednášky