Multithreading join in linguaggio C – srand function

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*) &parametroOUT);
}
void* codice2(void *arg){
    srand(time(NULL)+1);
    parametroOUT2 = (rand() % 6)+1;
    pthread_exit((void*) &parametroOUT2);
}
void* codice3(void *arg){
    srand(time(NULL)+2);
    parametroOUT3 = (rand() % 6)+1;
    pthread_exit((void*) &parametroOUT3);
}
 
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;
}