如何 - 使用文件锁定的矩阵元素之和(unix - C / C ++)

时间:2013-06-14 12:57:01

标签: c unix matrix locking fcntl

我有一个M[nxn]矩阵,必须根据以下标准计算[n,n]点中元素的总和:
- 随机选择一行或一列;
-sum它是该行或列的最后一个元素中的元素,并将其他元素设置为0;

现在,问题是,我必须锁定我正在使用的每一行或每列,因为我需要使用多个进程来执行此操作。我该怎么解决?
我知道我必须使用fcntl()以及其他一些属于它的东西,但我对解决它的方法很感兴趣。
(感谢您的建议!)

1 个答案:

答案 0 :(得分:0)

您实际上不需要锁定矩阵(除非它在文件中)。如果它在一个文件中,我会先将矩阵加载到内存中,然后你就不需要锁了。以这种方式看待它:

如果你有一个nxm矩阵,让你的父进程分叉m子进程并等待子进程。

在每个子进程中,让每一个进行m行中的每一行。

让每个子进程添加每一行,并将值设置为0并将总和放在最后一列中。

结束每个子进程。

完成所有操作后,让您的父进程汇总该列的第n行。

由于所有子进程都将在自己的数据集上运行,因此它们不需要锁定矩阵的任何部分,因为我们不会访问相同的内存区域。