6. cvičení


Úkoly

  1. Upravte 3. ú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. 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.