【问题标题】:How to calculate the average of numbers in a text file using threads in C programming?如何使用 C 编程中的线程计算文本文件中数字的平均值?
【发布时间】:2018-09-22 18:46:58
【问题描述】:

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

● 从文件中逐行读取。

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

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

【问题讨论】:

  • 你的问题太模糊了。请提供更多信息并尝试一下。

标签: c pthreads flags


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

    Mutex lock threads

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-02
      • 1970-01-01
      • 2012-03-14
      • 1970-01-01
      • 1970-01-01
      • 2014-07-30
      相关资源
      最近更新 更多