我有一个M[nxn]
矩阵,必须根据以下标准计算[n,n]点中元素的总和:
- 随机选择一行或一列;
-sum它是该行或列的最后一个元素中的元素,并将其他元素设置为0;
现在,问题是,我必须锁定我正在使用的每一行或每列,因为我需要使用多个进程来执行此操作。我该怎么解决?
我知道我必须使用fcntl()
以及其他一些属于它的东西,但我对解决它的方法很感兴趣。
(感谢您的建议!)
答案 0 :(得分:0)
您实际上不需要锁定矩阵(除非它在文件中)。如果它在一个文件中,我会先将矩阵加载到内存中,然后你就不需要锁了。以这种方式看待它:
如果你有一个nxm矩阵,让你的父进程分叉m子进程并等待子进程。
在每个子进程中,让每一个进行m行中的每一行。
让每个子进程添加每一行,并将值设置为0并将总和放在最后一列中。
结束每个子进程。
完成所有操作后,让您的父进程汇总该列的第n行。
由于所有子进程都将在自己的数据集上运行,因此它们不需要锁定矩阵的任何部分,因为我们不会访问相同的内存区域。