Konkurentné programovanie - 5. seminár z 27.9.2024

Zdroj
ručne priradené
Pridané

Pozrieť na YouTube →

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.

Otvoriť AI: ChatGPT · Claude · Gemini

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.