![]() |
Pages (8): « First ... « 4 5 6 7 [8] Show 150 posts per page |
.dsy:it. (http://www.dsy.it/forum/)
- Sistemi operativi e distribuiti (http://www.dsy.it/forum/forumdisplay.php?forumid=270)
-- esame in arrivo (http://www.dsy.it/forum/showthread.php?threadid=38379)
concordo con rufy...si questa cosa di insultare il prof e soprattutto di bestemmiare non è che sia il massimo...
__________________
You are what you know...
va bene moralisti..
Ora ho fatto un programma per sommare in alternanza un thread i numeri pari e uno i numeri dispari di una matrice.
code:
#include <pthread.h> #include <stdio.h> #include <stdlib.h> #define DIM 5 int mat[DIM][DIM]={ {77,20,12,100,-4}, {21,80,0,7,2}, {39,40,0,45,1}, {40,50,600,-30,1}, {0,0,0,1,0}}; void *Dispari(void *a); void *Pari(void *a); pthread_mutex_t mutex1=PTHREAD_MUTEX_INITIALIZER; pthread_cond_t cond=PTHREAD_COND_INITIALIZER; int vivo2 = 0; int i,j; int sommap,sommad; main(){ sommap=sommad=0; for(i=0;i<DIM;i++) for(j=0;j<DIM;j++) if((mat[i][j] % 2) == 0) sommap+=mat[i][j]; else sommad+=mat[i][j]; printf("La somma dei valori pari e':%d , dei valori dispari e': %d\nCliccare invio per continuare",sommap,sommad); char caxxi; scanf("%c",&caxxi); printf("\n Perfetto, avvio mutex: \n"); for(i=97;i<107;i++){ //fa solo fico! sleep(0); printf("%c\n",i); } sommad=sommap=0; pthread_t pit1,pit2; if(pthread_create(&pit1, NULL, Dispari, NULL)){ printf("Errore!\n"); exit(1); } if(pthread_create(&pit2, NULL, Pari, NULL)){ printf("Errore!\n"); exit(1); } if(pthread_join(pit1, NULL)){ printf("Errore nella join!\n"); exit(1); } if(pthread_join(pit2, NULL)){ printf("Errore nella join!\n"); exit(1); } printf("Somma dei numeri pari: %d, Somma dei numeri dispari: %d\n", sommap,sommad); pthread_exit(NULL); } void *Dispari (void *a) { int k,l; sommad=0; printf("thread1 entra in fase critica\n"); sleep(2); pthread_mutex_lock( &mutex1); printf("thread1 e' entrato in fase critica\n"); for(k=0;k<DIM;k++){ for(l=0;l<DIM;l++){ if((mat[k][l] %2) !=0){ sleep(1); printf("trovato dispari,VIVO2=%d\n",vivo2); sommad+=mat[k][l]; } else if(vivo2==0){ printf("trovato pari,entro in condizione di wait\n"); pthread_cond_wait(&cond,&mutex1); printf("trovato segnale, thread1 torna al lavoro\n"); //pthread_cond_signal(&cond); } } } printf("thread1 sta uscendo dalla fase critica\n"); pthread_mutex_unlock( &mutex1); printf("thread1 e' uscito dalla fase critica\n"); } void *Pari (void *a) { int k,l; sommap=0; printf("thread2 entra in fase critica\n"); sleep(5); pthread_mutex_lock( &mutex1); printf("thread2 e' entrato in fase critica\n"); for(k=0;k<DIM;k++){ for(l=0;l<DIM;l++){ if((mat[k][l] %2) ==0){ sleep(1); printf("trovato Pari, VIVO2 = %d\n",vivo2); sommap+=mat[k][l]; } else if(vivo2 != 1){ //printf("trovato dispari,entro in condizione di wait\n"); //pthread_cond_wait(&cond,&mutex1); printf("trovato segnale, thread2 torna al lavoro\n"); vivo2=1; pthread_cond_signal(&cond); } } } printf("thread2 sta uscendo dalla fase critica\n"); pthread_mutex_unlock( &mutex1); printf("thread2 e' uscito dalla fase critica\n"); }
Originally posted by Youngz
va bene moralisti..
.
.
Ps: non penso che il bocci abbia sbatti di leggere un forum per gli studenti, non mi sembra il tipo.
__________________
Nascerà qui, al ristorante "L'Orologio",ritrovo di artisti e sarà per sempre una squadra di grande talento.
Questa notte splendida darà i colori al nostro stemma: il Nero e l'Azzurro sullo sfondo d'oro delle stelle.
Si chiamerà Internazionale,perchè noi siamo fratelli del mondo.
(Milano,1908)
Va bene , scusate se ho insultato i prof.
youngz, una domanda seria: come mai usi il mutex? sono due funzioni separate ognuna gestita dal proprio thread separatamente, non è inutile utilizzarlo?
ps. il bocci a quest'ora è a fare l'aperitivo ![]()
il mutex a quanto ho capito serve a sincronizzare vari thread,quindi quando metto wait a uno quello con signal parte e quando finisce la sua eseguzione ritorna al wait.
Esempio, io sto studiando, mi parte il wait voglia di sigaretta, mi fumo la sigaretta e ritorno a studiare.
Ps: no, il bocci a quest'ora si sta facendo due svedesi.
Edit: sono youngz a casa di dellabest! per questo scrivo col suo.
PS2: riassuntino su tutti gli schemi hardware di paging in ita ? ![]()
Edit2: Io penso che questo possa essere uno schema delle possibili domande:
Programmazione in c di thread/semafori
2 tra algoritmi di disco,memoria e cpu
1 schema hardware di qualcosa come tlb e co (che non so)
1 domanda primo semestre generale(cosa son le auc e co)
1 BHO XD
il meccanismo dei mutex lo so, ma si utilizza nel caso in cui 2 thread, operino sulla stessa funzione! NO?
Lui ha detto che mette c+teoria, quindi in teoria (asd) non ci sono altri esercizi tipo roundrobincazziemazzi. SPERO!
No, spero che ci siano, una cosa che so. Sai che mi sa che si possono usare in entrambi i casi.Solo che nel caso operino su una stessa funzione lo trovo un bel po' inutile.
Se mette solo teoria teoria son fottuto, io ho puntato su fare il programma in C e gli algoritmi di schedulazione.
Io credo che lui gli algoritmi li intenda come "teoria". Penso ci saranno almeno due domande/esercizi sugli algoritmi
Bocci del azz se dopo tutta la sbatta avuta nell imparare le funzioni
in c da soli non C dai un 30 e lode a capa altro che algoritmi che ti
insultato si passa dall' ultima versione di windows al OS FckdBocci beta.0
bill gates ci farà una pippa
| All times are GMT. The time now is 06:46. | Pages (8): « First ... « 4 5 6 7 [8] Show all 115 posts from this thread on one page |
Powered by: vBulletin Version 2.3.1
Copyright © Jelsoft Enterprises Limited 2000 - 2002.