Модераторы: xvr
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Что-то менее ресурсоемкое чем fork, pthread_create 
:(
    Опции темы
Anton Vatchenko
Дата 19.4.2007, 09:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 460
Регистрация: 21.5.2004

Репутация: -1
Всего: -1



После вызова 10 fork система ругается, что не может выделить больше памяти, а при pthread_create - на второй раз слетает с той же ошибкой. Есть что-то, что меньше расходует ресурсы? Нужно создать около 150 потоков...


--------------------
user posted image
PM MAIL   Вверх
MAKCim
Дата 19.4.2007, 10:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 84
Всего: 207



Цитата(Anton Vatchenko @  19.4.2007,  09:54 Найти цитируемый пост)
После вызова 10 fork система ругается, что не может выделить больше памяти, а при pthread_create - на второй раз слетает с той же ошибкой. Есть что-то, что меньше расходует ресурсы? Нужно создать около 150 потоков... 

fork() возвращает ENOMEM или EAGAIN?
если второе, то поможет увеличение лимита на количество создаваемых дочерних процессов у родительского
man 2 setrlimit
man 2 getrlimit


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
Anton Vatchenko
Дата 19.4.2007, 10:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 460
Регистрация: 21.5.2004

Репутация: -1
Всего: -1



ENOMEM


--------------------
user posted image
PM MAIL   Вверх
permea
Дата 19.4.2007, 10:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 4.4.2007

Репутация: нет
Всего: нет



Цитата
Есть что-то, что меньше расходует ресурсы?

?
#include <sched.h>
int clone(int (*fn)(void *), void *child_stack, int flags, void *arg);
_syscall2(int, clone, int, flags, void *, child_stack);   
?
PM MAIL   Вверх
Anton Vatchenko
Дата 19.4.2007, 11:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 460
Регистрация: 21.5.2004

Репутация: -1
Всего: -1



весь инет обрыл, и не мог найти, что передавать в child_stack.


--------------------
user posted image
PM MAIL   Вверх
permea
Дата 19.4.2007, 12:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 4.4.2007

Репутация: нет
Всего: нет



Аргумент child_stack указывает на местонахождение стека, использованного дочерним процессом. Хотя дочерний и родительский процессы могут разделять память, дочернему процессу нельзя ипспользовать тот-же стек для исполнения, что и вызывающему процессу. Поэтому родительский процесс должен выделить пространство в памяти под стек дочернего процесса и передать указатель на это пространство функции clone. На всех процессорах с реализацией Linux (кроме процессоров HP PA) стек "растет вниз". child_stack обычно указывает на самый последний адрес памяти для стека дочернего процесса. 
(с) http://www.opennet.ru/man.shtml?topic=clon...2&russian=0
?
PM MAIL   Вверх
Anton Vatchenko
Дата 19.4.2007, 12:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 460
Регистрация: 21.5.2004

Репутация: -1
Всего: -1



Это я читал. И что туда передавать?


--------------------
user posted image
PM MAIL   Вверх
permea
Дата 19.4.2007, 12:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 4.4.2007

Репутация: нет
Всего: нет



Надо полагать, указатель на конец выделенного маллоком куска памяти. 
PM MAIL   Вверх
MAKCim
Дата 19.4.2007, 19:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 84
Всего: 207



Anton Vatchenko
clone() не стандартизирован POSIX-ом
так что, если нужна совместимость не только с Linux, подумай прежде чем его использовать
лучше скажи, чем у тебя система загружена, что больше чем на 10 fork-ов памяти не хватает?


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
Goganchic
Дата 22.4.2007, 21:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 678
Регистрация: 18.6.2004

Репутация: нет
Всего: 5



А это точно не лимиты самой системы?
PM Jabber   Вверх
MAKCim
Дата 23.4.2007, 09:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 84
Всего: 207



Цитата(Goganchic @  22.4.2007,  21:49 Найти цитируемый пост)
А это точно не лимиты самой системы? 

он же написал - ENOMEM


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
Goganchic
Дата 23.4.2007, 10:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 678
Регистрация: 18.6.2004

Репутация: нет
Всего: 5



точно-точно, извиняюсь smile
PM Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Программирование под Unix/Linux"
xvr
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой "Код".
  • Вопросы мобильной разработки тут
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, xvr.

 
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Программирование под Unix/Linux | Следующая тема »


 




[ Время генерации скрипта: 0.0984 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.