что будет если exec внутри потока pthread
Модератор: Модераторы разделов
-
igsilya
- Сообщения: 80
- ОС: Debian squeeze 6.0
что будет если exec внутри потока pthread
ну собственно весь вопрос в названии:
я хочу создать процесс-нить pthread, а внутри него запустить другую программу с помощью exec.
Как это может повлиять на другие потоки моего процесса?
Спасибо.
я хочу создать процесс-нить pthread, а внутри него запустить другую программу с помощью exec.
Как это может повлиять на другие потоки моего процесса?
Спасибо.
-
serzh-z
- Бывший модератор
- Сообщения: 8259
- Статус: Маньяк
- ОС: Arch, Fedora, Ubuntu
-
igsilya
- Сообщения: 80
- ОС: Debian squeeze 6.0
Re: что будет если exec внутри потока pthread
-
frp
- Сообщения: 1445
- ОС: Debian Squeeze
-
/dev/random
- Администратор
- Сообщения: 5489
- ОС: Gentoo
Re: что будет если exec внутри потока pthread
Не краху, а прекращению выполнения и замещению новым процессом. Это именно то, для чего и предназначен exec. Впрочем, это лишь вопрос терминологии.
А можно поинтересоваться, в чём смысл сего действа?
-
igsilya
- Сообщения: 80
- ОС: Debian squeeze 6.0
Re: что будет если exec внутри потока pthread
/dev/random писал(а): ↑12.03.2011 15:44
Не краху, а прекращению выполнения и замещению новым процессом. Это именно то, для чего и предназначен exec. Впрочем, это лишь вопрос терминологии.
А можно поинтересоваться, в чём смысл сего действа?
Нужно организовать некое подобие http сервера.
при этом он должен поддерживать cgi-программы.
=> их нужно запускать в отдельных процессах. fork исспользовать как-то не хотелось, но теперь , по-видимому, без него не получится.
если у вас есть другие предложения, я буду рад их услышать.
-
serzh-z
- Бывший модератор
- Сообщения: 8259
- Статус: Маньяк
- ОС: Arch, Fedora, Ubuntu
-
igsilya
- Сообщения: 80
- ОС: Debian squeeze 6.0
Re: что будет если exec внутри потока pthread
просто для http сервера создание полновесного процесса - очень затратная операция.
просто если несколько тысяч пользователей захотят запустить cgi программу, сервер не сможет создавать столько процессов в короткие интервалы времени и попросту завалится, в конце-концов существует ограничение на кол-во процессов в системе.
-
/dev/random
- Администратор
- Сообщения: 5489
- ОС: Gentoo
Re: что будет если exec внутри потока pthread
Почему не хотелось? Если вы думаете, что это затратный вызов, то заблуждаетесь. Память не копируется, на неё лишь ставится пометка "copy on write" (скопировать при первой же попытке туда что-то записать). Создание процесса и потока практически не отличаются по затратности.
Вот exec - да, это затратный вызов.
Upd: когда начинал писать, предыдущего поста ещё не было. Теперь вижу, что угадал.
-
igsilya
- Сообщения: 80
- ОС: Debian squeeze 6.0
Re: что будет если exec внутри потока pthread
/dev/random писал(а): ↑12.03.2011 15:57
Почему не хотелось? Если вы думаете, что это затратный вызов, то заблуждаетесь. Память не копируется, на неё лишь ставится пометка "copy on write" (скопировать при первой же попытке туда что-то записать). Создание процесса и потока практически не отличаются по затратности.
но копирование все равно произойдет.
я же собираюсь exec делать => произойдет копирование сегмента кода и сегмента данных все равно.
-
/dev/random
- Администратор
- Сообщения: 5489
- ОС: Gentoo
Re: что будет если exec внутри потока pthread
Скопируется пара страниц, не более. Вот exec, как я уже сказал, потребует большого количества времени. Независимо от того, был ли перед этим fork. Нужно полностью освободить адресное пространство и многие другие ресурсы, а затем подгрузить новый исполнимый файл, создав для него новый стек, новую кучу и т.д.
-
igsilya
- Сообщения: 80
- ОС: Debian squeeze 6.0
Re: что будет если exec внутри потока pthread
а что делать с ограничениями на кол-во процессов в системе?
-
serzh-z
- Бывший модератор
- Сообщения: 8259
- Статус: Маньяк
- ОС: Arch, Fedora, Ubuntu
-
igsilya
- Сообщения: 80
- ОС: Debian squeeze 6.0
Re: что будет если exec внутри потока pthread
-
/dev/random
- Администратор
- Сообщения: 5489
- ОС: Gentoo
-
Portnov
- Модератор
- Сообщения: 1786
- Статус: Матёрый линуксоид
- ОС: Debian testing/unstable
Re: что будет если exec внутри потока pthread
В linux и большинстве других современных unix-like систем потоки — это разновидность процессов. Поток отличается от процесса только тем, что не имеет своего выделенного адресного пространства (использует адресное пространство, общее с другими потоками).
Работа: Ubuntu 9.10
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru
Дом: Debian testing/unstable и на всякий случай winxp в virtualbox.
Для разнообразия: моя домашняя страница -http://iportnov.ru