0

私はM[nxn]行列を持っており、次の基準を考慮して [n, n] ポイントの要素の合計を計算する必要があります:
-行または列をランダムに選択します。
- その行または列の最後の要素の要素を合計し、他の要素を 0 に設定します。

ここでの問題は、複数のプロセスを使用してこの合計を行う必要があるため、作業している各行または列をロックする必要があることです。どうすれば解決できますか?およびそれに属する他のいくつかのもの
を使用する必要があることは知っていますが、それを解決する方法に興味があります。 (アドバイスありがとう!)fcntl()

4

1 に答える 1

0

実際には、マトリックスをロックする必要はありません (ファイル内にない限り)。ファイルにある場合は、最初にマトリックスをメモリにロードするだけで、ロックは必要ありません。このように見てください:

nxm 行列がある場合、親プロセスに m 子プロセスを分岐させ、子プロセスを待機させます。

各子プロセスで、それぞれに m 行のそれぞれを取得させます。

各子プロセスで各行を合計し、値を 0 に設定して、合計を最後の列に入れます。

各子プロセスを終了します。

すべてが完了したら、親プロセスに列の n 番目の行を合計させます。

すべての子プロセスは独自のデータセットで動作するため、メモリの同じ領域にアクセスすることはないため、マトリックスのどの部分もロックする必要はありません。

于 2013-06-14T13:33:11.457 に答える