Я пытаюсь добавить компонент параллельной обработки в однопотоковую однопроцессную программу.Я только изучаю некоторые методы многопроцессорной обработки и поэтому не совсем уверен в их возможностях.
Логика программы, которую я ищу, чтобы реализовать:
- основной процесс вызываетфункция.
- вызывает функцию fork () в начале цикла for.
- дочерний процесс продолжает работу с функцией, выполняя другие подфункции или выходя обратно на основе проверок времени.
- тем временем родительский цикл заканчивается первым для цикла цикла и начинается снова, таким образом-подбивание второго потомка.
- функция продолжается до тех пор, пока цикл for не завершится после выполнения примерно 10 fork ().
- функция вызывается снова после завершения на основетаймер более высокого уровня.
Будет ли работать эта реализация?Пример кода:
check_timer() {
for(i = 0; i < 10; i++) {
pid_t pid = fork();
if(pid == 0) {
execute child 1 checks and possible executes..
exit(); // when completed
}
else {
parent maybe does something or just ends first round of for loop..
}
}
some implementation of wait(); to wait for all children to finish before leaving check_timer() function..
}
Создаст ли это одновременно до 10 дочерних процессов, выполняющихся в фоновом режиме родителя, который затем ожидает завершения дочерних процессов?Также были бы полезны некоторые советы по использованию wait ().