Разделить работу на два потока с использованием wait, waitpid, fork - PullRequest
0 голосов
/ 09 февраля 2012

Я хочу разделить работу на два дочерних процесса. Один ребенок находит минимальное значение, а другой максимальное значение. Вот пример кода:

http://pastebin.com/P29wsRdP

Теперь возвращаемое значение составляет мин: 0 макс: 0, вы можете посмотреть на это?

Ответы [ 3 ]

1 голос
/ 09 февраля 2012

Процессы не разделяют память. Глобальные переменные min / maxvalue, модифицируемые функциями, являются локальными для процесса. Ни один из них не будет касаться родительских переменных min / maxvalue. Вам нужно сообщить результаты каким-либо образом, например, используя трубу / розетки.

Я думаю, у вас есть еще одна проблема, вы на самом деле порождаете три процесса. первый процесс, разветвленный первым fork (), выполнит второй fork (), потому что он не защищен if.

0 голосов
/ 09 февраля 2012

Вы не используете темы, как описали другие.

Но почему вы делаете это, когда вы можете одновременно искать мин / макс только в одном цикле?

0 голосов
/ 09 февраля 2012

Вы не разделяетесь на потоки, вы разделяетесь на новые процессы, каждый из которых имеет свою собственную версию переменных (поскольку оба новых процесса имеют свою независимую память)Вам либо нужен какой-то IPC, либо вам нужно использовать потоки.

...