Я использую NSThread
и устанавливаю для него размер стека следующим образом:
thread=[[NSThread alloc]initWithTarget:self selector:@selector(fibnocciForLoop) object:nil];
[thread setStackSize:12];
[thread start];
Как написано в документах Apple для -[NSThread setStackSize:]
:
Обсуждение
Вы должны вызвать этот метод перед началом обсуждения. Установка размера стека после запуска потока изменяет размер атрибута (который отражается методом stackSize), но не влияет на фактическое количество страниц, выделенных для потока.
Но когда я позже проверяю размер стека в отладчике, я не получаю установленного значения:
print (int)[thread stackSize]
$1 = 524288
Мой вопрос: почему существует метод setStackSize:
, если он ничего не делает?
Пожалуйста, дайте мне знать, где я ошибаюсь, или API для setStackSize:
бесполезен?
EDIT: Обратитесь к ответу @Josh Caswell на этот вопрос, я пропустил K в 4K, и, следовательно, приведенный выше код будет работать нормально, как показано ниже:
thread=[[NSThread alloc]initWithTarget:self
selector:@selector(fibnocciForLoop) object:nil];
[thread setStackSize:12*4096];//4K=4096
[thread start];
ДОПОЛНЕНИЕ ЭТОГО ВОПРОСА:
Может ли кто-нибудь объяснить, почему Apple предоставила этот метод setStackSize и как и когда использовать этот конкретный метод, потому что пользователю требуется много вычислений для расчета того, сколько байтов используется/будет использоваться.
Я хочу знать его точное назначение в NSThread?
Спасибо!