Многопоточная программа на C: вычисление пространства стека потоков - PullRequest
1 голос
/ 23 апреля 2010

Положение:

Я пишу программу на C, которая поддерживает несколько потоков. После завершения потока создается новый.

Каждый поток разветвляется - дочерний процесс запускает процесс PHP через exec (), а родительский ожидает его завершения.

Каждый процесс PHP извлекает следующий элемент из очереди, обрабатывает его и завершает работу.

Базовый код: http://www.4pmp.com/2010/03/multitasking-php-in-parallel/

Проблема:

Процессы PHP являются задачами Symfony, и Symfony требует довольно большого объема памяти. Как можно безопасно рассчитать необходимое пространство стека для каждого потока, чтобы у процессов PHP было достаточно памяти?

Ограничение памяти, установленное в php.ini, составляет 128 МБ, поэтому я должен выделить столько места в стеке?

Ответы [ 2 ]

3 голосов
/ 23 апреля 2010

Когда вы fork получаете новый процесс, когда вы exec заменяет процесс, который вы выполняете. Поэтому любые настройки стекового пространства в программе на C не имеют отношения к использованию памяти PHP.

0 голосов
/ 23 апреля 2010

В одном случае ДА .. потому что, поскольку PHP.ini ограничивает использование / ограничение памяти до 128 МБ, мы знаем, что это максимальный объем памяти, который процесс PHP собирается использовать.Таким образом, лучше выделить такое пространство для каждого потока [безопасная сторона… удвоить его размер].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...