在C中使用pthread的多线程程序比串行版本

时间:2016-02-17 05:49:54

标签: c multithreading pthreads

我将C程序转换为多线程版本。代码太长了,无法在此发布,但我使用的方法非常简单。原始程序中有一个包含四个程序的管道。每个程序的输出成为下一个程序的输入。我所做的是为四个程序中的每个程序创建一个线程,以使用pthread进行任务流水线操作。我使用的机器是一个16核服务器。我得到了正确的结果,但问题是性能越来越差。当我调试它时,我发现了最奇怪的事情。即使只运行一行具有相同数据的代码,时间也不同。例如,程序中有一行代码,如下所示

mtx[i][j][d] = max(mtx[i][j][d], mtx[i-2][j-1][d-1] + t[offset]);//max is a macro defined to find the max of two values

这只是一个三维动态编程计算。

因为所有数据都是相同的并且不在任何关键部分,所以我真的很困惑可能是什么原因。可能是缓存问题,因为它是共享内存机器?

0 个答案:

没有答案