pthread_attr_setstackaddr函数用法详解
pthread_attr_setstackaddr函数简介
- 头文件包含
#include <pthread.h>
- 函数定义
int pthread_attr_setstackaddr(pthread_attr_t * attr \
int pthread_attr_getstackaddr(const pthread_attr_t * attr ,
void ** stackaddr );
- 编译链接选项
-pthread
pthread_attr_setstackaddr函数常见使用错误
- 链接错误
undefined reference to `pthread_attr_setstackaddr'
解决办法:添加链接选项
-pthread
- 编译错误
warning: implicit declaration of function ‘pthread_attr_setstackaddr’ [-Wimplicit-function-declaration]
解决办法:包含头文件
#include <pthread.h>
pthread_attr_setstackaddr函数详细描述
这些函数已经过时: do not use them 改用pthread_attr_setstack (3)和pthread_attr_getstack (3)。
pthread_attr_setstackaddr ()函数将attr引用的thread attributes对象的stack address属性设置为stackaddr 中指定的值,该属性指定使用thread attributes对象attr 创建的线程应该使用的堆栈位置
stackaddr应该指向调用方分配的至少有 PTHREAD_STACK_MIN 字节的缓冲区。分配的缓冲区的页应该是可读和可写的。
pthread_attr_getstackaddr ()函数返回stackaddr 指向的缓冲区中attr引用的thread attributes对象的堆栈地址属性
pthread_attr_setstackaddr函数返回值
如果成功,这些函数返回0;错误时,它们返回一个非零错误号。
pthread_attr_setstackaddr函数错误码
没有定义错误(但是应用程序仍然应该处理可能的错误返回)。
pthread_attr_setstackaddr函数其他说明
Do not use these functions!它们不能便携地使用,因为它们无法指定堆栈的增长方向或范围。例如,在堆栈向下增长的体系结构上,stackaddr指定所分配堆栈区域的highest地址之后的下一个地址。但是,在堆栈向上增长的体系结构上,stackaddr在分配的堆栈区域中指定lowest地址。相比之下,pthread_attr_setstack (3)和pthread_attr_getstack (3)使用的stackaddr始终是指向所分配堆栈区域中最低地址的指针(而stacksize参数指定堆栈的范围)。
评论区