5. cvičení - Semafory


Otázky k úkolům

Zde budou umístěny dotazy k úkolům které dostanu emailem. Předtím než mi pošlete email s dotazem zkontrolujte prosím, zda se některý Váš kolega neptal na stejnou věc.

Úkoly

  1. Upravte 1. úkol z předchozího cvičení, tak aby vlákno které provede operaci pop na prázdný zádsobník počkalo až jiné vlákno vloží nějaký prvek. Dále proces který vloží prvek na zádsobník musí upřednostit vlákno které chce získat prvek ze zásobníku před vláknem které chce vkládat.

  2. Producent-konzument: Mějme n producentů a n konzumentů a sdílený buffer o velikosti n. Proveďtě synchronizaci pomocí semaforů.

  3. (Bodovaný) The search-insert-delete problem: Máme 3 druhy vláken která sdílí seznam: searchers, inserters a deleters. Searchers pouze prochází seznam. Mohou tedy vykonávat svoji práci současně. Inserters přidavájí prvky na konec seznamu. V jednu chvílí ale může přidávat prvek do seznamu pouze jedno vlákno. Nicméně současně s přidávání může být prováděno vyhledávání. Nakonec deleters obedírají libovolný prvek ze seznamu. Odebírání prvku musí být vzájemně vyloučené s procházením a vkládáním. V jednu chvíli může odebírat prvek pouze jedno vlákno.