私はM[nxn]
行列を持っており、次の基準を考慮して [n, n] ポイントの要素の合計を計算する必要があります:
-行または列をランダムに選択します。
- その行または列の最後の要素の要素を合計し、他の要素を 0 に設定します。
ここでの問題は、複数のプロセスを使用してこの合計を行う必要があるため、作業している各行または列をロックする必要があることです。どうすれば解決できますか?およびそれに属する他のいくつかのもの
を使用する必要があることは知っていますが、それを解決する方法に興味があります。
(アドバイスありがとう!)fcntl()
質問する
294 次
1 に答える
0
実際には、マトリックスをロックする必要はありません (ファイル内にない限り)。ファイルにある場合は、最初にマトリックスをメモリにロードするだけで、ロックは必要ありません。このように見てください:
nxm 行列がある場合、親プロセスに m 子プロセスを分岐させ、子プロセスを待機させます。
各子プロセスで、それぞれに m 行のそれぞれを取得させます。
各子プロセスで各行を合計し、値を 0 に設定して、合計を最後の列に入れます。
各子プロセスを終了します。
すべてが完了したら、親プロセスに列の n 番目の行を合計させます。
すべての子プロセスは独自のデータセットで動作するため、メモリの同じ領域にアクセスすることはないため、マトリックスのどの部分もロックする必要はありません。
于 2013-06-14T13:33:11.457 に答える