Ничего не понимаю. Программлю под 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 тредов?