Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <stdbool.h>
- #include <pthread.h>
- typedef struct
- {
- int numConto;
- int saldo;
- }datiConto;
- pthread_mutex_t bufferVuoto;
- pthread_mutex_t datoPronto = PTHREAD_MUTEX_INITIALIZER;
- int gSaldo,gNumConto,gMaxUtenti;
- void* produttore(void* arg)
- {
- datiConto * d = (datiConto *)arg;
- int i;
- for (i=0;i<gMaxUtenti;i++)
- {
- pthread_mutex_lock(&bufferVuoto);
- gNumConto = (d+(i*sizeof(datiConto)))->numConto;
- gSaldo = (d+(i*sizeof(datiConto)))->saldo;
- pthread_mutex_unlock(&datoPronto);
- }
- pthread_exit(0);
- return NULL;
- }
- void* consumatore(void* arg)
- {
- int i;
- for (i=0;i<gMaxUtenti;i++)
- {
- pthread_mutex_init(&bufferVuoto,NULL); /*inizializzo il semaforo a libero */
- datoPronto =0;
- printf("[gSaldo]=%d [gNumConto]= %d",gSaldo,gNumConto);
- pthread_mutex_unlock(&bufferVuoto);
- }
- pthread_exit(0);
- return NULL;
- }
- void main()
- {
- int i;
- printf("Inserisci il numero di utenti massimo\n");
- scanf("%d",&gMaxUtenti);
- datiConto * d = (datiConto *)malloc(sizeof(datiConto)*gMaxUtenti);
- for(i=0;i<gMaxUtenti;i++)
- {
- printf("Inserisci il numero conto del %d utente",i+1);
- scanf("%d",&(d+(i*sizeof(datiConto)))->numConto);
- printf("Inserisci il saldo del %d utente",i+1);
- scanf("%d",&(d+(i*sizeof(datiConto)))->saldo);
- }
- pthread_t produci,consuma;
- pthread_mutex_lock(&datoPronto);
- pthread_create(&produci,NULL,produttore,(void *)(d));
- pthread_create(&consuma,NULL,consumatore,NULL);
- pthread_join(consuma,NULL);
- pthread_join(produci,NULL);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement