Ничего не понимаю. Программлю под NPTL.
Имею вот такую программенцию:
#include <stdio.h>
#include <string.h>
#include <pthread.h>
#include <unistd.h>
void *start(void *d) {
printf("thread [%d]\n", (int)d);
for(;;) {
sleep(10);
}
return NULL;
}
int main() {
int i, erк;
pthread_t t;
pthread_attr_t attr;
size_t default_stacksize;
pthread_attr_init(&attr);
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
pthread_attr_setstacksize(&attr, 16 * 1024);
for(i=0;;++i) {
if((err=pthread_create(&t, &attr, &start, (void*)i)) != 0) {
printf("Cannot create thread [%d]: %s\n", i, strerror(err));
break;
}
}
return 1;
}
Эта программа завершается при попытке создания 3030-го треда с ошибкой
EAGAIN (Resource temporarily unavailable). Если запустить ее
под рутом, позволяется создать 6050 тредов, а затем - та же ошибка.
Спрашивается: как же это так, если утверждатеся, что NPTL позволяет
создать тысячи и тысячи тредов? Откуда такие странные ограничения?
Что делать, если я хочу больше, чем 3000, скажем, 10000 тредов?
Ответ на:
комментарий
от Dead
Ответ на:
комментарий
от anonymous
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум pthread (2008)
- Форум pthread не заходит в функцию потока (2012)
- Форум pthread (2006)
- Форум pthread: утечка памяти или нормальная работа? (2010)
- Форум Завершение потока: остается занятая память. (2009)
- Форум pthread.h вопрос (2009)
- Форум pthreads - ошибка линковки (2001)
- Форум pthread_create() приводит к Segmentation fault (2004)
- Форум pthread C++ (2004)
- Форум pthread_create и прочий бред. (2004)