我有一个多平台代码,它有一些递归调用(在线程中运行,而不是主线程),在某些情况下,默认堆栈大小对于递归深度是不够的。我在Windows中使用/ STACK编译器标志解决了这个问题:
/ STACK:2097152(2MB,默认值:1MB)
但在OSX中我使用GCD。我认为它是通过pthreads实现的,但是我无法找到一种方法来设置线程'像pthreads那样的堆栈大小(使用像pthread_attr_setstacksize这样的东西)。
我尝试使用链接器标志-Wl,-stack_size -Wl,1000000,但是我在这里设置的数量并不重要,我的应用程序总是在相同的递归深度级别崩溃。看起来这只影响主线程,而不是GCD后创建的线程。
我尝试通过ulimit -s 32768(默认值:8192)设置系统堆栈大小,它不会影响我可以实现的递归深度级别。