如何使用C编程中的线程计算文本文件中数字的平均值?

时间:2018-09-22 18:46:59

标签: c pthreads flags

如何使用C编程中的线程逐行计算文本文件中的数字平均值(例如:第1行中的数字平均值= xxx,第2行中的数字平均值= yyy ....)

●从文件中逐行读取。

●一个线程获取了数据集的记录后,另一个线程不应获取同一数据集。

●计算每行的平均值并写入另一个文件。

2 个答案:

答案 0 :(得分:0)

假设这是C中的多线程分配,请将所有数字存储在数组X中。然后创建两个数组A1和A2,每个数组占文件行总数的一半。在数组A1中,存储来自X的所有奇数位置编号。存储所有来自X的偶数位置编号。现在生成两个线程,每个线程都作为参数传递给数组A1和A2之一。让每个线程将它们各自数组的所有元素的总和存储在一个单独的变量中。现在,在两个线程结束执行之后,将两个线程的总和相加并除以行数。

答案 1 :(得分:0)

使用线程时,避免竞争条件很重要。在这里,如果您的一个线程试图找出要读取的行,而另一个线程试图更新该值,则可能发生这种情况。因此,您应该使用Mutex。每个需要读取或写入互斥量变量(line_number等)的线程都将获得一个锁,因此,如果其他线程尝试访问该变量,它们将挂起,直到互斥量被解锁。 除此之外,创建线程并使它们从文件中读取只是问题。 有关如何创建线程并使用互斥锁的一些示例,请查看以下链接:

https://www.thegeekstuff.com/2012/05/c-mutex-examples/?refcom

  

Mutex lock threads