C++ 有没有办法使用GCD设置线程堆栈大小?

C++ 有没有办法使用GCD设置线程堆栈大小?,c++,multithreading,macos,recursion,grand-central-dispatch,C++,Multithreading,Macos,Recursion,Grand Central Dispatch,我有一个多平台代码,其中包含一些递归调用(在线程中运行,而不是在主线程中运行),在某些情况下,默认堆栈大小不足以满足递归深度。我在windows中使用/STACK编译器标志解决此问题: /堆栈:2097152(2MB,默认值:1MB) 但在OSX中,我使用GCD。我读到它是通过pthreads实现的,但是我找不到像pthreads那样设置线程堆栈大小的方法(使用pthread_attr_setstacksize之类的东西) 我尝试使用链接器标志-Wl,-stack_size-Wl,1000000

我有一个多平台代码,其中包含一些递归调用(在线程中运行,而不是在主线程中运行),在某些情况下,默认堆栈大小不足以满足递归深度。我在windows中使用/STACK编译器标志解决此问题:

/堆栈:2097152(2MB,默认值:1MB)

但在OSX中,我使用GCD。我读到它是通过pthreads实现的,但是我找不到像pthreads那样设置线程堆栈大小的方法(使用pthread_attr_setstacksize之类的东西)

我尝试使用链接器标志-Wl,-stack_size-Wl,1000000,但不管我在这里设置了多少,我的应用程序总是在相同的递归深度级别崩溃。这似乎只影响主线程,而不是GCD创建的主线程


我尝试通过ulimit-s 32768(默认值:8192)设置系统堆栈大小,这不会影响我可以达到的递归深度级别。

您不拥有GCD使用的线程,因此无法对它们进行任何控制。如果您需要这种级别的控制,您应该使用您自己创建的线程,直接使用诸如pthreads之类的API。好的,似乎我没有选择,我将代码更改为直接使用pthreads,问题解决了。谢谢您不拥有GCD使用的线程,因此无法对它们进行任何控制。如果您需要这种级别的控制,您应该使用您自己创建的线程,直接使用诸如pthreads之类的API。好的,似乎我没有选择,我将代码更改为直接使用pthreads,问题解决了。谢谢