Требуются ли конструкции синхронизации для нескольких вызовов fork ()? - PullRequest
0 голосов
/ 16 декабря 2018

Рассматривая примеры функции fork (), я не уверен, когда и когда не следует использовать вызов wait ().Я предполагаю, что вызов wait () на самом деле никогда не нужен и используется как инструмент для обработки ошибок в случае, если родительский процесс порождает слишком много дочерних процессов. Однако я не совсем уверен, и любое разъяснение предметабыть очень полезным

1 Ответ

0 голосов
/ 17 декабря 2018

Я предполагаю, что вызов wait () на самом деле никогда не нужен и используется как инструмент обработки ошибок

Не совсем.

система ожиданиявызовы необходимы, когда родительский процесс должен знать, когда завершается дочерний процесс.

Например, в одном из моих проектов у меня было требование разрешить одновременный запуск подзадач n .То, что я сделал, породило подзадачу с помощью вилки.Затем создайте поток, который выполнил waitpid для ожидания завершения порожденной подзадачи, чтобы регулировать поток параллельных n подзадач.

Вы можете проверить здесь какфорк и waitpid использовались для удовлетворения ограничения планировщика задач.

...