Skip to content

Instantly share code, notes, and snippets.

Simulujte nasledujucu situaciu. V obci su volby a 100 volicov ide volit do volebnej miestnosti, kde su 3 plenty a 1 volebna urna. Volic prichadza do miestnosti (v simulacii kazdu 1s) najskor kruzkuje kandidatov (v simulacii 2s) a nasledne vhadzuje hlasovaci listok do urny (v simulacii 1s). Simulacia konci ked odhlasuju vsetci volici.
1. Doplnte do programu premennu pocitajucu pocet volicov, ktori uz odvolili; hodnota nech je programom vypisovana kazdych 5s. [4b]
2. Zabezpecte synchronizaciu, tak, aby subezne mohli iba traja volici kruzkovat kandidatov za plentami a iba jeden volic vhadzovat listok do urny. [6b]
Poznamky:
- na synchronizaciu pouzite iba mutexy+podmienene premenne; resp monitory
- nespoliehajte sa na uvedene casy ci pocty, simulacia by mala fungovat aj s inymi casmi alebo s nahodne generovanymi casmi alebo poctami
- build (console): gcc volici.c -o volici -lpthread
@dnflps3000
dnflps3000 / gist:a0e8150f8a0ee139daa88bc4b23d0a8e
Last active April 9, 2026 18:50
poddani a slachtici vlakna
Simulujte nasledujucu situaciu. V malom kralovstve korunovali noveho krala a chodia sa mu neustale klanat styria slachtici a desiati poddani. Prejavovanie ucty kralovi trva nejaky cas (v simulacii 1s) a nejaky cas si slahctic ci poddany dava prestavku (v simulacii 4s). Cela simulacia nech trva 30s.
1. Doplnte do programu pocitadlo pocitajuce, kolko krat sa kralovi poklonili slachtici; a pocitadlo pocitajuce, kolko krat sa kralovi poklonili poddani. [2b]
2. Zabezpecte, aby sa kralovi sucasne klanali maximalne dvaja slachtici a tiez aby sa kralovi neklanal slachtic spolu s poddanym (cize alebo max. 2 slachtici, alebo lubovolne vela poddanych). Ak je pred kralom rad, slachtici maju samozrejme prednost. [5b]
3. Osetrite v programe spravne ukoncenie simulacie po uplynuti stanoveneho casu. [3b]
Poznamky:
- na synchronizaciu pouzite iba mutexy, podmienene premenne alebo semafory
Simulujte nasledujucu situaciu. V pekarni pracuju pekari (10 pekarov), ktori pecu chlieb v peciach (4 pece). Pekar pripravuje chlieb nejaky cas (v simulacii 4s) a potom ide k volnej peci a pecie v nej chlieb (2s). Cela simulacia nech trva 30s.
1. Doplnte do programu pocitadlo pocitajuce, kolko chlebov bolo upecenych. [2b]
2. Zabezpecte, aby do obsadenej pece pekar vlozil chlieb az ked sa uvolni, cize aby poclal, kym nebude nejaka pec volna. Simulujte situaciu, ze ked pekar upecie 2 chleby, pocka na vsetkych kolegov a spravia si prestavku (v simulacii 4s). [5b]
3. Osetrite v programe spravne ukoncenie simulacie po uplynuti stanoveneho casu tak, aby pekar prerusil cinnost hned, ako je to mozne (ak uz zacal pripravu alebo pecenie moze ju dokoncit). [3b]
Poznamky:
- na synchronizaciu pouzite iba mutexy, podmienene premenne alebo semafory
Simulujte nasledujucu situaciu. Desiati maliari maluju steny.
Maliarovi trva nejaky cas, kym stenu maluje (v simulacii 2s) a nejaky cas, kym si ide nabrat farbu do vedra (v simulacii 1s). Cela simulacia nech trva nejaky cas (30s).
1. Doplnte do programu pocitadlo celkoveho poctu vedier minutej farby a tiez nech si kazdy maliar pocita, kolko vedier farby uz minul preniesol, na konci simulacie vypiste hodnoty pocitadiel. [2b]
2. Ked maliar minie 4 vedra, pocka na dvoch svojich kolegov a kazdy si spravi prestavku na nejaky cas (v simulacii 2s). [5b]
3. Osetrite v programe spravne ukoncenie simulacie hned po uplynuti stanoveneho casu (nezacne sa dalsia cinnost). [3b]
Simulujte nasledujucu situaciu. V kmeni su dve kasty: lovci (6 lovcov) a zberaci (12 zberacov). Uctievaju bozstvo, ktoremu chodia davat dary do chramu. Lovec lovi zver nejaky cas (v simulacii 6s) a potom ide do chramu dat cast ulovku ako dar bozstvu, co tiez trva nejaky cas (v simulacii 2s). Zberac zbiera plody nejaky cas (v simulacii 4s) a potom ide do chramu dat cast plodov bozstvu, co tiez trva nejaky cas (v simulacii 1s). Cela simulacia nech trva 30s.
1. Doplnte do programu pocitadlo pocitajuce, kolko krat bozstvu dali dar lovci a kolko krat zberaci. [2b]
2. Zabezpecte, aby do chramu sucasne mohli vojst maximalne dvaja lovci alebo styria zberaci, iba prislusnici jednej kasty naraz. Ak je pred chramom rad, zabezpecte spravodlivy pristup (kasty su si rovnocenne). [5b]
3. Osetrite v programe spravne ukoncenie simulacie po uplynuti stanoveneho casu. [3b]
Poznamky:
- na synchronizaciu pouzite iba mutexy, podmienene premenne alebo semafory
@dnflps3000
dnflps3000 / gist:6993db3b8104fd87b62c11cc005540ea
Created April 8, 2026 16:31
vlakna vysvetlenie mutex farbicky
#include <iostream> // C++ knižnica pre vstup/výstup (cout, cin)
using namespace std; // aby sme nemuseli písať std::
// gcc pt_cond_ex.c -o pt_cond_ex -lpthread // príkaz na kompiláciu v C (poznámka)
#include <stdio.h> // C knižnica pre printf
#include <pthread.h> // knižnica pre prácu s vláknami (threads)
#include <unistd.h> // funkcia sleep()
typedef enum { NONE, RED, GREEN } color_t; // vlastný typ: NONE, RED, GREEN
@dnflps3000
dnflps3000 / gist:1defb24f49e4d7559f739f56f8104b2a
Last active April 9, 2026 18:49
vysvetlenie vlakna monitory podmienky - organizmy
Simulujte nasledujucu situaciu. Organizmy typu A,B a C rastu nejaky cas (v simulacii 1, 2 a 3s) a potom sa rozmnozia; a potom zase dokola. Na rozmnozenie su potrebne 2 organizmy a vznikaju 1 alebo 2 nove organizmy ostavajuceho typu (cize B a B splodia dva: A a C; C a B splodia jeden: A). Simulacia trva 10s a na zaciatku je z kazdeho typu vytvorene 1 A, 2 B a 3 C organizmy. Rozmnozenie netrva ziadny cas, cize uvazovat ci sa mozu rozmnozovat subezne nema zmysel.
1. Doplnte do programu premenne pocitajuce organizmy v systeme, pre kazdy typ jedno pocitadlo. Na konci simulacie vypiste pocty organizmov typu A, B a C. [2b]
2. Zabezpecte synchronizaciu tak, aby organizmus, ktory sa chce rozmnozit, pockal dalsi organizmus (ak treba); a aby potom oba organizmy vypisali, s akym typom sa rozmnozili. [6b]
3. Osetrite v programe spravne ukoncenie simulacie po uplynuti stanoveneho casu tak, aby uz ziadna cinnost (rast organizmu) nezacala. [2b]
#include <stdio.h> // printf
@dnflps3000
dnflps3000 / gist:3177320fc4c9312ba64a3583f7dbe3d7
Last active April 9, 2026 18:49
vysvetlenie monitory a podmienky pre vlakna c++ - pismenka
/*
Meno:
Datum:
Simulujte nasledujucu situaciu. Styria generovaci pismenok generuju pismenka, generovanie pismenka trva nejaky cas (1s) a ked ho vygeneruju, umiestnia ho na stol, kde sa zmesti 10 pismenok. Desiati testovaci beru pismenka zo stola a testuju ich, testovanie pismenka trva nejaky cas (2s). Cela simulacia nech trva 30s.
1. Doplnte do programu pocitadlo vygenerovanych a pocitadlo otestovanych pismenok, na konci simulacie vypiste hodnoty pocitadiel. [2b]
2. Osetrite v programe pristup k stolu - zmente umiestnovanie a branie pismenok tak, aby nehrozilo, ze generovac "prepise" pismenko, ktore nebolo otestovane, a ze testovac otestuje pismenko, ktore nebolo vygenerovane alebo uz bolo otestovane. [5b]
3. Osetrite v programe spravne ukoncenie generovacov a testovacov po uplynuti stanoveneho casu simulacie. [3b]