线程属性设置

本文只是针对 POSIX 线程库功能接口与知识点的汇总罗列

库         :    /lib64/libpthread.so*

头文件  :    pthread.h


线程属性设置:


1.线程属性结构  pthread_attr_t

线程大多属性都可通过该结构体设置, 在创建线程时通过 pthread_create的第二个参数使其

生效。其定义如下

/usr/include/bits/pthreadtypes.h : typedef union pthread_attr_t pthread_attr_t;

/*------------------------------------------------------------*/

# ifdef __x86_64__

# if __WORDSIZE == 64

#   define __SIZEOF_PTHREAD_ATTR_T 56

# else

#   define __SIZEOF_PTHREAD_ATTR_T 32

# endif

# else

# define __SIZEOF_PTHREAD_ATTR_T 36

# endif

union pthread_attr_t

{

char __size[__SIZEOF_PTHREAD_ATTR_T];

long int __align;

};

/*------------------------------------------------------------*/


2.初始化/销毁  线程属性结构体

int pthread_attr_init(pthread_attr_t *attr);

int pthread_attr_destroy(pthread_attr_t *attr);


3.设置/获取  线程分离属性

int pthread_attr_setdetachstate(pthread_attr_t *attr, int detachstate);

int pthread_attr_getdetachstate(pthread_attr_t *attr, int *detachstate);

线程分离属性值仅有 2 个可选项

PTHREAD_CREATE_DETACHED  分离

PTHREAD_CREATE_JOINABLE     未分离


4.设置/获取  线程栈信息

int pthread_attr_setstack(pthread_attr_t *attr,

void *stackaddr, size_t stacksize);

int pthread_attr_getstack(pthread_attr_t *attr,

void **stackaddr, size_t *stacksize);

若指定栈空间,栈大小必须不小于 PTHREAD_STACK_MIN


5.设置/获取  栈警戒区大小

int pthread_attr_setguardsize(pthread_attr_t *attr, size_t guardsize);

int pthread_attr_getguardsize(pthread_attr_t *attr, size_t *guardsize);

防止栈溢出而设置的警戒区,应大于 0


6.设置取消状态

int pthread_setcancelstate(int state, int *oldstate);

取消状态有 2 个可选项

PTHREAD_CANCEL_ENABLE  可取消

PTHREAD_CANCEL_DISABLE  不可取消


7.设置取消类型

int pthread_setcanceltype(int type, int *oldtype);

取消类型有 2 个可选项

PTHREAD_CANCEL_DEFERRED          取消响应在下次取消点到达时

PTHREAD_CANCEL_ASYNCHRONOUS     取消响应为任意时刻点




版权声明:本文为wjxxaut原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。