5. cvičení


Úkoly

  1. Upravte úkol 1 ze 2. cvičení tak, aby přístup ke sdílené proměnné byl synchronizován.

  2. Upravte úkol ze 3. cvičení tak, aby synchronizace byla provedena pomocí semaforů.

  3. Naprogramujte thread-safe zásobník. Přístup k zásobníku synchronizujte pomocí semaforů. Se zásobníkem můžeme provádět následující operace:

    • push - Vloží prvek na zásobník
    • pop - Odebere prvek z vrcholu zásobníku
    • isEmpty - Vrací true pokud je zásobník prázdný

    Pokud vlákno zavolá pop na prázdný zásobník tak nemusí čekat až tam jíné vlákno vloží prvek ale hned vrati nil.

  4. Naprogramujte atomický broadcast. Máme jednoho producenta a n konzumentů a sdílený buffer. Producent vkládá do bufferu hodnoty a konzumenti je čtou. Každá hodnota ale musí být přečtena všemi konzumenty před tím než může producent vložit další hodnotu do bufferu.