История изменений
Исправление
Moisha_Liberman,
(текущая версия)
:
Я только добавлю к Вашему комменту, что данное правило соблюдается и для многопоточных приложений. Проверить это легко. Например:
/**
* Убрана проверка на ошибки, чтоб пример не загромождать.
* Для компиляции: gcc st_size.c -o st_size -lpthread
*/
#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/resource.h>
int main(int argc, char *argv[]) {
pthread_attr_t attr;
size_t stacksize;
struct rlimit rlim;
pthread_attr_init(&attr);
pthread_attr_getstacksize(&attr, &stacksize);
getrlimit(RLIMIT_STACK, &rlim);
printf("%zd\n", (size_t) rlim.rlim_cur);
printf("%zd\n", stacksize);
pthread_attr_destroy(&attr);
return 0;
}
Т.е., у нас stack size будет одинаков что для основого потока, что для потоков-потомков. Этому есть объяснение в man 3 pthread_create. И там же есть объяснение по поводу размера стека для случая ulimit -s unlimited в реализации потоков через NPTL (дефолтная реализация в наши дни).
Если вдруг захочется повыставлять свои размеры стека для потоков, то тогда man 3 pthread_attr_setstacksize.
**Но вот лучше бы без таких извращений. ** Хоть С и не ограничивает, но тут зарутеть раз плюнуть.
Исходная версия
Moisha_Liberman,
:
Да. Именно!
Я только добавлю к Вашему комменту, что данное правило соблюдается и для многопоточных приложений. Проверить это легко. Например:
/**
* Убрана проверка на ошибки, чтоб пример не загромождать.
* Для компиляции: gcc st_size.c -o st_size -lpthread
*/
#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/resource.h>
int main(int argc, char *argv[]) {
pthread_attr_t attr;
size_t stacksize;
struct rlimit rlim;
pthread_attr_init(&attr);
pthread_attr_getstacksize(&attr, &stacksize);
getrlimit(RLIMIT_STACK, &rlim);
printf("%zd\n", (size_t) rlim.rlim_cur);
printf("%zd\n", stacksize);
pthread_attr_destroy(&attr);
return 0;
}
Т.е., у нас stack size будет одинаков что для основого потока, что для потоков-потомков. Этому есть объяснение в man 3 pthread_create. И там же есть объяснение по поводу размера стека для случая ulomit -s unlimited в реализации потоков через NPTL.
Если вдруг захочется повыставлять свои размеры стека для потоков, то тогда man 3 pthread_attr_setstacksize.
**Но вот лучше бы без таких извращений. ** Хоть С и не ограничивает, но тут зарутеть раз плюнуть.