Я работаю над программой, которая должна принять 15 000 целых чисел из файла. После считывания значений поток должен создать 10 потоков, каждый из которых отвечает за вычисление суммы их блока (1500 значений каждый). Затем каждый поток напечатает сумму своих значений, а основной поток вычислит сумму из всех 10 потоков.
Я имею в виду, что нужно прочитать все значения и сохранить их в массиве int, используя int для подсчета количества прочитанных значений (назовем его значениями int). Затем я бы разделил это число на число потоков, которые я хотел бы определить, сколько значений в блоке должно иметь каждый поток (назовем его int block). Затем я запускаю поток, перебираю массив (время блока int), увеличивая при этом количество индексов массива, а затем начинаю новый поток, если количество индексов массива не равно последнему индексу массива.
Это правильный взгляд на эту проблему? Есть ли более простой подход? Нам были даны подсказки для использования pthread_create, pthread_join, pthread_exit, pthread_attr_init, pthread_attr_destroy и pthread_setdetachstate. Это моя первая попытка многопоточности, поэтому было бы здорово получить обратную связь о том, где в моем коде я должен инициировать и завершать каждый поток, чтобы он на самом деле был многопоточным и не выполнял отдельный поток несколько раз. Любая помощь будет принята с благодарностью!
РЕДАКТИРОВАТЬ: застрял в аргументах командной строки
#include <stdio.h>
int main(int argc, char *argv[]) {
int i;
FILE *fp;
int c;
for (i = 1; i < argc; i++) {
fp = fopen(argv[i], "r");
if (fp == NULL) {
fprint(stderr, "cat: can't open %s\n", argv[i]);
continue;
}
while ((c = getc(fp)) != EOF) {
putchar(c);
}
fclose(fp);
}
return 0;
}
Кажется, я забыл, насколько ужасным я был при вводе / выводе, когда мы освещали этот раздел. Каковы аргументы командной строки для проверки моей программы (prob_5.c) с заданным параметром?