почему размер стека по умолчанию 0 - PullRequest
1 голос
/ 18 февраля 2012

Я читаю pthreads из https://computing.llnl.gov/tutorials/pthreads/ и там написано

Размер стека по умолчанию сильно варьируется. Максимальный размер, который может быть полученный также сильно варьируется и может зависеть от количества потоков на узел. Как прошлые, так и настоящие архитектуры показаны продемонстрировать широкое изменение размера стека по умолчанию.

тогда он перечисляет некоторые значения по умолчанию для пары процессоров, но никогда не говорит 0 для любого процессора. Поэтому я скопировал, вставил свою C-программу и выполнил. Соответствующая часть:

   size_t stacksize;     
   pthread_attr_init(&attr);
   pthread_attr_getstacksize (&attr, &stacksize);
   printf("Default stack size = %li\n", stacksize);

я получаю вывод:

Default stack size = 0

Почему 0?

1 Ответ

3 голосов
/ 18 февраля 2012

Размер стека в атрибуте равен минимальному размеру стека, который вполне может быть нулевым.Я подозреваю, что в этом случае любой поток, созданный с этим атрибутом, получает разумное значение по умолчанию, например 4M.

Идея состоит в том, чтобы оставить размер стека атрибута в одиночку, если вы хотите использовать значение по умолчанию, и установить его на что-то другое, еслиВы хотите, чтобы заставить его к определенному минимуму.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...