0

ジョブを 2 つの子プロセスに分割したい。1 つの子が最小値を見つけ、別の子が最大値を見つけます。サンプルコードは次のとおりです。

http://pastebin.com/P29wsRdP

戻り値は min:0 max:0 になりました。これを見ていただけますか?

4

3 に答える 3

1

プロセスはメモリを共有しません。関数によって変更されたmin/maxvalueグローバル変数は、プロセスに対してローカルです。それらのどれも親の最小/最大値変数に触れません。パイプ/ソケットを使用するなど、何らかの方法で結果を伝達する必要があります。

実際に3つのプロセスを生成しているというさらなる問題があると思います。最初のfork()でフォークされた最初のプロセスは2番目のfork()を実行します。これは、ifによって保護されていないためです。

于 2012-02-09T12:31:35.030 に答える
0

スレッドに分割するのではなく、それぞれ独自のバージョンの変数を持つ新しいプロセスに分割します (両方の新しいプロセスには独自の独立したメモリがあるため)。ある種の IPC が必要か、実際にスレッドを使用する必要があります。

于 2012-02-09T12:28:26.693 に答える
0

他の人が説明したように、スレッドを使用していません。

しかし、1 つのループだけで最小値と最大値の両方を探すことができるのに、なぜこれを行うのでしょうか?

于 2012-02-09T12:42:37.260 に答える