Как рассчитать среднее число чисел в текстовом файле, используя потоки в C-программировании?
Как посчитать среднее число чисел в текстовом файле построчно (например, среднее число в строке 1 = ххх, среднее число в строке 2 = гггг....), используя потоки в C-программировании
● Читайте построчно из файла.
● Как только запись набора данных берется потоком, тот же набор данных не должен быть взят другим потоком.
● Рассчитать среднее значение каждой строки и записать в другой файл.
2 ответа
Предполагая, что это многопоточное присваивание в C, сохраните все числа в массиве X. Затем создайте два массива A1 и A2, каждый из которых равен половине общего числа строк в файле. В массиве A1 сохраните все нечетные номера позиций из X. Сохраните все четные номера позиций из X. Теперь создайте два потока, каждому из которых передается один из массивов A1 и A2 в качестве аргументов. Пусть каждый поток хранит общую сумму всех элементов своих соответствующих массивов в некоторой отдельной переменной. Теперь, когда оба потока завершат выполнение, добавьте обе суммы из потоков и разделите их на количество строк.
При использовании потоков важно избегать условий гонки. Здесь это может произойти, если один из ваших потоков попытается выяснить, с какой строки нужно читать, а другой попытается обновить это значение. Следовательно, вы должны использовать Mutex
, Каждый поток, который должен прочитать или записать переменную мьютекса (line_number и т. Д.), Получает блокировку, поэтому, если другие потоки попытаются получить доступ к этой переменной, они будут приостановлены до тех пор, пока мьютекс не будет разблокирован. Кроме того, это просто вопрос создания потоков и чтения их из файла. Некоторые примеры того, как создавать потоки и использовать мьютексы с ними, смотрите по ссылкам ниже:
https://www.thegeekstuff.com/2012/05/c-mutex-examples/?refcom