Я делаю обзор с запиской лекции моего профессора.Я получил этот вопрос, когда добрался до секции параллелизма:
на слайде профессор привел два примера использования pthread (один хороший пример, а другой плохой).Но я не понимаю, почему между ними есть разница.
Вот хороший пример:
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
void *get_rand_num(void *args) {
int *nump = malloc(sizeof(int));
srand(pthread_self());
*nump = rand();
return nump;
}
int main() {
pthread_t tid;
void *ptr = NULL;
pthread_create(&tid, NULL, get_rand_num, NULL);
pthread_join(tid, &ptr);
printf("Random number: %d\n", * (int *) ptr);
return 0;
}
И плохой пример
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
void *get_rand_num(void *args) {
int num;
srand(pthread_self());
num = rand();
return #
}
int main() {
pthread_t tid;
void *ptr = NULL;
pthread_create(&tid, NULL, get_rand_num, NULL);
pthread_join(tid, &ptr);
printf("Random number: %d\n", * (int *) ptr);
return 0;
}
Любой может понять эти два примера, пожалуйста, объясните мне, почему плохой отличается отПервый, а почему это не хорошо?
Спасибо
Аллан