Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <pthread.h>
- #include <cstdlib>
- #include <iostream>
- #include <signal.h>
- #include <ctime>
- #include <unistd.h> //biblioteka za sleep();
- //maknul sam atomic jer iz nekog razloga nema na barki te biblioteke
- using namespace std;
- int N,M; //da ih mozes pozivat u funkcijama
- int ZajednickaVarijabla[10]; //ne treba dinamicki alocirati, a i pise da nek max bude 10
- void izlaz(int sig)
- {
- cout<<"Prekid programa!"<<endl;
- exit(1);
- //bez return(0); void ne vraca nist
- }
- void *Pisac(void *x) //zad 1. dr. je da generira, ispise i spremi u globalnu mem. N brojeva
- {
- int i;
- for(i=0;i<N;i++) ZajednickaVarijabla[i]=rand()%100+1; //generiramo polje rand brojeva
- for(i=0;i<N;i++) cout<<i<<" -> "<<ZajednickaVarijabla[i]<<endl; //ispis
- return NULL;
- /*
- ne treba dodatna varijabla za spremanje
- u globalnu memoriju zato jer se automatski
- sprema u polje
- */
- }
- void *Citac(void *x) //zad 2. dr je da procita brojeve, izracuna i ispise sumu
- {
- int i;
- int zbroj=0;
- for(i=0;i<N;i++) zbroj=zbroj+ZajednickaVarijabla[i]; //cita brojeve i racuna zbroj
- cout<<"Zbroj = "<<zbroj<<endl; //klasicni ispis return NULL; }
- int main(int argc, char **argv)//dodaj ulazne argumente!!!
- {
- if(argc!=3) //ograniceno na 10 kaj nebi bilo nismo znali
- {
- cout<<"Greska! Pogresan unos parametara."<<endl;
- return 0;
- }
- N=atoi(argv[1]);
- M=atoi(argv[2]);
- int i;
- pthread_t thr_id[2]; //deklariranje 2 dretve
- srand(time(0));
- for(i=0;i<M;i++)
- { if(pthread_create(&thr_id[0], NULL, Pisac, NULL)!=0) {
- cout<<"Greska kod stvaranja dretve!"<<endl;
- exit(1);
- }
- sleep(1); if(pthread_create(&thr_id[1], NULL, Citac, NULL)!=0) {
- cout<<"Greska pri stvaranju dretve!"<<endl; exit(1);
- } sleep(1);
- } sigset(SIGINT, izlaz); pthread_join(thr_id[0], NULL);
- pthread_join(thr_id[1], NULL);
- //join dretvi da se zavrse za 1. od N slucaja
- izlaz(0); return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement