- 8
- 0
- CPU
- Intel(R) Core(TM) i7-8750H CPU @ 2.20GHz
- RAM
- 16,0 GB
- GPU
- NVIDIA GeForce GTX 1070 with Max-Q Design
- OS
- Windows 10
Salve, mi sto approcciando per la prima volta ai threads usando C e non riesco a venirne a capo, per quanto provi non viene stampato nulla a schermo. L'esercizio in questione è questo qui:
Si realizzi un programma C per la creazione di due Thread concorrenti che, utilizzando la stessa thread function, stampino rispettivamente N numeri ed M lettere scelte casualmente.
Il mio codice (non ho inserito la parte di stampa delle lettere, ma dovrebbe comunque stamparmi i numeri):
Si realizzi un programma C per la creazione di due Thread concorrenti che, utilizzando la stessa thread function, stampino rispettivamente N numeri ed M lettere scelte casualmente.
Il mio codice (non ho inserito la parte di stampa delle lettere, ma dovrebbe comunque stamparmi i numeri):
Codice:
#include <stdio.h>
#include <pthread.h>
#include <stdlib.h>
#include <time.h>
#include <unistd.h>
#define N 5
#define M 7
struct print_params{
int type;
};
void* print_type(void* parameters){
struct print_params* pp = (struct print_params*) parameters;
if(pp->type == 0){
time_t t;
int array[N];
srand((unsigned) time(&t));
for( int i = 0 ; i < 5 ; i++ ) {
array[i] = (rand() % 50);
printf("%d ", array[i]);
fflush(stdout);
sleep(1);
}
}
if(pp->type == 1){
//stampa lettere casuali
}
return (void*) &(pp->type);
}
int main(){
pthread_t t1_id;
pthread_t t2_id;
struct print_params t1_args;
t1_args.type = 0;
struct print_params t2_args;
t2_args.type = 1;
pthread_create(&t1_id, NULL, &print_type, &t1_args);
pthread_create(&t2_id, NULL, &print_type, &t2_args);
return 0;
}
Ultima modifica: