Есть ли способ установить размер стека потока с помощью GCD?

У меня есть мультиплатформенный код, который имеет несколько рекурсивных вызовов (выполняющихся в потоке, а не в главном), и в некоторых случаях размер стека по умолчанию недостаточен для глубины рекурсивности. Я решаю это в Windows, используя флаг компилятора / STACK:

/ STACK: 2097152 (2 МБ, по умолчанию: 1 МБ)

Но в OSX я использую GCD. Я читал, что это реализовано поверх pthreads, но я не могу найти способ установить размер стека потоков, как это делает pthreads (используя что-то вроде pthread_attr_setstacksize).

Я пытался использовать флаг компоновщика -Wl, -stack_size -Wl, 1000000, но не имеет значения, какую сумму я здесь установил, мое приложение всегда падает на одном и том же уровне глубины рекурсивности. Похоже, что это влияет только на основной поток, а не на те, что были созданы GCD.

Я попытался установить размер системного стека с помощью ulimit -s 32768 (по умолчанию: 8192), это не влияет на уровень глубины рекурсивности, которого я могу достичь.

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]