Цель моего назначения - создать цикл для порождения 5 потоков с целочисленными аргументами от 0 до 4. У меня есть 3 файла: thread_demo.c, который содержит основную функцию, worker.c, который содержит функцию для вычисления квадратаАргумент и header.h, чтобы сохранить 2 файла вместе.
thread_demo.c
#include "header.h"
#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
#include <readline/readline.h>
#define NUM_THREADS 5
#define PROMPT_SIZE 5
int main(){
pthread_t threads[NUM_THREADS];
pthread_attr_t pthread_attributes;
int *prompt;
scanf("%d", &prompt);
for(int i = 0; i < NUM_THREADS; i++){
pthread_create(&threads[i], &pthread_attributes, &worker, (void *) prompt);
}
}
worker.c
#include "header.h"
#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
void *worker(void * num){
int *input;
input = (int*) #
// Calculate square
int output = *input * *input;
printf("The square of %d", *input);
printf(" is %d.\n", output);
pthread_exit(NULL);
}
У меня нет ошибок компиляции, но количество потоков, порождаемых моим кодом, не согласовано.Показанные изображения являются моими результатами ввода «5» 3 разных времен, когда я не вносил изменения в код.Я не уверен, что вызывает это, я знаю, что что-то упустил, но я не знаю, что это такое.Я также должен заставить «главный поток ждать, пока все потоки не завершатся», что меня смущает.Когда я порождаю 5 потоков, как узнать, какой из них является основным?Я никогда не писал код, связанный с процессами и потоками, поэтому я полностью потерян.Любая помощь будет принята с благодарностью!