In questo esempio riprendiamo il codice di un articolo precedente, in cui si usava un thread per simulare il lancio di un dado, adattandolo per simulare stavolta il lancio di 3 dadi in multithreading sfruttando sempre la funzione srand. Di seguito il codice completo.
#include <stdlib.h>
#include <stdio.h>
#include <pthread.h>
int parametroOUT, parametroOUT2, parametroOUT3;
void* codice(void *arg){
srand(time(NULL));
parametroOUT = (rand() % 6)+1;
pthread_exit((void*) ¶metroOUT);
}
void* codice2(void *arg){
srand(time(NULL)+1);
parametroOUT2 = (rand() % 6)+1;
pthread_exit((void*) ¶metroOUT2);
}
void* codice3(void *arg){
srand(time(NULL)+2);
parametroOUT3 = (rand() % 6)+1;
pthread_exit((void*) ¶metroOUT3);
}
int main(){
int *risultato, *risultato2, *risultato3;
pthread_t t1,t2,t3;
pthread_create(&t1, NULL, codice, NULL);
pthread_create(&t2, NULL, codice2, NULL);
pthread_create(&t3, NULL, codice3, NULL);
pthread_join(t1, (void*) &risultato);
pthread_join(t2, (void*) &risultato2);
pthread_join(t3, (void*) &risultato3);
printf("primo dado estratto: %d\n", *risultato);
printf("secondo dado estratto: %d\n", *risultato2);
printf("terzo dado estratto: %d\n", *risultato3);
return 0;
}