| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Программирование под Unix/Linux > Что-то менее ресурсоемкое чем fork, pthread_create |
| Автор: Anton Vatchenko 19.4.2007, 09:54 |
| После вызова 10 fork система ругается, что не может выделить больше памяти, а при pthread_create - на второй раз слетает с той же ошибкой. Есть что-то, что меньше расходует ресурсы? Нужно создать около 150 потоков... |
| Автор: Anton Vatchenko 19.4.2007, 10:35 |
| ENOMEM |
| Автор: permea 19.4.2007, 10:50 | ||
? #include <sched.h> int clone(int (*fn)(void *), void *child_stack, int flags, void *arg); _syscall2(int, clone, int, flags, void *, child_stack); ? |
| Автор: Anton Vatchenko 19.4.2007, 11:59 |
| весь инет обрыл, и не мог найти, что передавать в child_stack. |
| Автор: permea 19.4.2007, 12:14 |
| Аргумент child_stack указывает на местонахождение стека, использованного дочерним процессом. Хотя дочерний и родительский процессы могут разделять память, дочернему процессу нельзя ипспользовать тот-же стек для исполнения, что и вызывающему процессу. Поэтому родительский процесс должен выделить пространство в памяти под стек дочернего процесса и передать указатель на это пространство функции clone. На всех процессорах с реализацией Linux (кроме процессоров HP PA) стек "растет вниз". child_stack обычно указывает на самый последний адрес памяти для стека дочернего процесса. (с) http://www.opennet.ru/man.shtml?topic=clone&category=2&russian=0 ? |
| Автор: Anton Vatchenko 19.4.2007, 12:16 |
| Это я читал. И что туда передавать? |
| Автор: permea 19.4.2007, 12:24 |
| Надо полагать, указатель на конец выделенного маллоком куска памяти. |
| Автор: MAKCim 19.4.2007, 19:16 |
| Anton Vatchenko, clone() не стандартизирован POSIX-ом так что, если нужна совместимость не только с Linux, подумай прежде чем его использовать лучше скажи, чем у тебя система загружена, что больше чем на 10 fork-ов памяти не хватает? |
| Автор: Goganchic 22.4.2007, 21:49 |
| А это точно не лимиты самой системы? |
| Автор: MAKCim 23.4.2007, 09:07 |
он же написал - ENOMEM |
| Автор: Goganchic 23.4.2007, 10:18 |
| точно-точно, извиняюсь |