在pthreads中指定线程堆栈大小

abe*_*eln 1 c c++ multithreading pthreads

我想增加通过pthread_create()创建的线程的堆栈大小.走的路似乎是

int pthread_attr_setstack( pthread_attr_t *attr,
                           void *stackaddr,
                           size_t stacksize ); 
Run Code Online (Sandbox Code Playgroud)

来自pthread.h.

但是,根据多个在线参考,

stackaddr应适当对齐以用作堆栈; 例如,如果(stackaddr&0x7)不为0,则pthread_attr_setstack()可能会因[EINVAL]而失败.

我的问题:有人可以举例说明如何进行对齐吗?是(对齐)平台还是依赖于实现?

提前致谢

R..*_*R.. 12

千万不要使用pthread_attr_setstack.它有很多致命缺陷,其中最严重的是,它是不可能的永远免费或线程已经用它创建之后再使用堆栈.(POSIX明确声明任何尝试都会导致未定义的行为.)

POSIX提供了一个更好的功能,pthread_attr_setstacksize它允许您请求所需的堆栈大小,但让实现负责分配和取消分配堆栈.