Блок памяти по умолчанию для потоков Unix / Linux? - PullRequest
0 голосов
/ 05 июля 2011

Кто-нибудь знает, сколько памяти по умолчанию выделено для потока, созданного в операционной системе Unix / Linux? Для Windows XP OS я обнаружил, что он выделяет блок памяти в 1 МБ, это правильно?

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 05 июля 2011

На этот вопрос не будет единого ответа.

На самом деле, в Windows нет ни одного ответа. Различные исполняемые файлы определяют разные ограничения стека. И даже в рамках одного процесса отдельные потоки могут иметь разные ограничения стека.

И это становится еще сложнее, если учесть различия между .net и нативными исполняемыми файлами. Довольно странно, что исполняемые файлы .net фиксируют выделение всего стека для каждого потока, как только поток запускается. С другой стороны, собственные исполняемые файлы резервируют выделение стека, а затем фиксируют память по требованию, используя защитные страницы.

0 голосов
/ 05 июля 2011

Вы можете увидеть, сколько места выделено для стеков потоков (измеряется в килобайтах) с помощью ulimit -s.

Цитирование из справочной страницы pthread_create(3) :

В Linux / x86-32 стек по умолчанию размер для новой темы составляет 2 мегабайта. Под резьбой NPTL реализация, если RLIMIT_STACK мягкое ограничение ресурса в то время запущенная программа имеет какое-либо значение чем «безлимитный», то он определяет размер стека по умолчанию для новых потоков. Используя pthread_attr_setstacksize (3), атрибут размера стека может быть явно указано в аргументе attr используется для создания потока, чтобы получить размер стека, отличный от по умолчанию.

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