diff --git a/Zadania_domowe/zajecia8/zad1.cm b/Zadania_domowe/zajecia8/zad1.cm new file mode 100644 index 0000000..3475282 --- /dev/null +++ b/Zadania_domowe/zajecia8/zad1.cm @@ -0,0 +1,54 @@ +const int N = 5; +semaphore s2; +semaphore s; +monitor m{ + condition c; + int buffer[N]; + int write_pos; + int read_pos; + + void queue_add(int item){ + buffer[write_pos] = item; + write_pos = (write_pos + 1) % N; + } + + int queue_get(){ + int item; + item = buffer[read_pos]; + read_pos = (read_pos + 1) % N; + return item; + } + + init{ + write_pos = 0; + read_pos = 0; + } +} + +void prod(int i, int n){ + for(i; i<=n; i=i+1){ + wait(s2); + queue_add(i); + signal(s); + } +} + +void kons(int n){ + int i; + int liczba; + for(i = 1; i<=n; i=i+1){ + wait(s); + liczba=queue_get(); + signal(s2); + cout << "Pobralem " <