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它允许您请求所需的堆栈大小,但让实现负责分配和取消分配堆栈.
| 归档时间: |
|
| 查看次数: |
2663 次 |
| 最近记录: |