2020-07 [seminár] vlákna

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 sa venuje praktickej práci s vláknami v rámci úloh o používateľských vláknach a synchronizácii. Najprv je stručne vysvetlená prvá úloha, kde je potrebné implementovať prepínanie kontextu vlákien (funkcie Thread Create, Thread Schedule a Thread Switch) v rozsahu približne šiestich kľúčových riadkov kódu. Ťažisko prednášky je na programe implementujúcom hešovaciu tabuľku so zreťazenými zoznamami, do ktorej viacero vlákien súčasne vkladá záznamy. Na živej ukážke je demonštrovaný dátový pretek pri paralelnom vkladaní do rovnakého bucketu, kde dochádza k strate záznamov kvôli súbežnej modifikácii ukazovateľov. Ako riešenie je predstavená knižnica PThreads a jej mutexy (pthread_mutex_init, lock, unlock), pričom sa experimentálne overuje správne umiestnenie zámkov okolo kritickej sekcie vo funkcii insert.

  • - Prvá úloha spočíva v implementácii používateľského balíčka vlákien (Thread Create, Thread Schedule, Thread Switch)
  • - Thread Switch rieši prepnutie zásobníka a registrov, ktoré sa neukladajú automaticky
  • - Demonštračný program implementuje hešovaciu tabuľku s baketmi a zreťazenými zoznamami
  • - Pri viacvláknovom vkladaní do rovnakého bucketu dochádza k strate záznamov (race condition)
  • - Problém je spôsobený súbežnou zmenou ukazovateľa na začiatok zreťazeného zoznamu
  • - Riešením je použitie mutexov z knižnice PThreads (pthread_mutex_init/lock/unlock)
  • - Správne umiestnenie zámku musí chrániť celú kritickú sekciu vloženia záznamu vo funkcii insert

Zhrnutie pripravené s pomocou AI z prepisu videa.