Linux 线程属性函数总结

来源:互联网 发布:js 图片预览插件 编辑:程序博客网 时间:2024/06/05 07:39
1、初始化一个线程对象的属性int pthread_attr_init(pthread_attr_t *attr);    返回值:若是成功返回0,否则返回错误的编号    形  参:            attr       指向一个线程属性的指针    说  明:Posix线程中的线程属性pthread_attr_t主要包括scope属性、detach属性、堆栈地址、堆栈大小、优先级。            pthread_attr_init实现时为属性对象分配了动态内存空间。    头文件:#include <pthread.h>2、销毁一个线程属性对象int pthread_attr_destroy(pthread_attr_t *attr);    返回值:若是成功返回0,否则返回错误的编号    形  参:            attr       指向一个线程属性的指针    说  明:经pthread_attr_destroy去除初始化之后的pthread_attr_t结构被pthread_create函数调用,将会导致其返回错误。    头文件:#include <pthread.h>3、获取线程间的CPU亲缘性int pthread_attr_getaffinity_np(pthread_attr_t *attr, size_t cpusetsize, cpu_set_t *cpuset);    返回值:若是成功返回0,否则返回错误的编号    形  参:            attr       指向一个线程属性的指针    说  明:获取线程的CPU亲缘属性    头文件:#include <pthread.h>4、设置线程的CPU亲缘性int pthread_attr_setaffinity_np(pthread_attr_t *attr, size_t cpusetsize, const cpu_set_t *cpuset);    返回值:若是成功返回0,否则返回错误的编号    形  参:            attr         指向一个线程属性的指针            cpusetsize   指向CPU组的缓冲区大小            cpuset       指向CPU组的指针    说  明:通过指定cupset来设置线程的CPU亲缘性    头文件:#include <pthread.h>5、获取线程分离状态属性int pthread_attr_getdetachstate(pthread_attr_t *attr, int *detachstate);    返回值:若是成功返回0,否则返回错误的编号    形  参:            attr          指向一个线程属性的指针            detachstate   保存返回的分离状态属性    说  明:获取线程分离状态属性    头文件:#include <pthread.h>6、修改线程分离状态属性int pthread_attr_setdetachstate(pthread_attr_t *attr, int detachstate);    返回值:若是成功返回0,否则返回错误的编号    形  参:            attr        指向一个线程属性的指针            detachstat  有两个取值                        PTHREAD_CREATE_DETACHED(分离)                        PTHREAD_CREATE_JOINABLE(非分离)    说  明:Posix线程中的线程属性pthread_attr_t主要包括scope属性、detach属性、堆栈地址、堆栈大小、优先级。    头文件:#include <pthread.h>7、获取线程的栈保护区大小int pthread_attr_getguardsize(pthread_attr_t *attr, size_t *guardsize);    返回值:若是成功返回0,否则返回错误的编号    形  参:            attr       指向一个线程属性的指针            guardsize  返回获取的栈保护区大小    说  明:获取线程的栈保护区大小    头文件:#include <pthread.h>8、设置线程的栈保护区大小int pthread_attr_setguardsize(pthread_attr_t *attr, size_t guardsize);    返回值:若是成功返回0,否则返回错误的编号    形  参:            attr       指向一个线程属性的指针            guardsize  线程的栈保护区大小    说  明:参数提供了对栈指针溢出的保护。            默认为系统页大小            如果设置为0表示没有保护区。            大于0,则会为每个使用 attr 创建的线程提供大小至少为 guardsize 字节的溢出保护区    头文件:#include <pthread.h>9、获取线程的作用域int pthread_attr_getscope(pthread_attr_t *attr, int *scope);    返回值:若是成功返回0,否则返回错误的编号    形  参:            attr       指向一个线程属性的指针            scope      返回线程的作用域    说  明:指定了作用域也就指定了线程与谁竞争资源    头文件:#include <pthread.h>10、设置线程的作用域int pthread_attr_setscope(pthread_attr_t *attr, int scope);    返回值:若是成功返回0,否则返回错误的编号    形  参:            attr       指向一个线程属性的指针            guardsize  线程的作用域,可以取如下值                       PTHREAD_SCOPE_SYSTEM    与系统中所有进程中线程竞争                       PTHREAD_SCOPE_PROCESS   与当前进程中的其他线程竞争    说  明:指定了作用域也就指定了线程与谁竞争资源    头文件:#include <pthread.h>11、获取线程的堆栈信息(栈地址和栈大小)int pthread_attr_getstack(pthread_attr_t *attr, void **stackaddr, size_t *stacksize);    返回值:若是成功返回0,否则返回错误的编号    形  参:            attr       指向一个线程属性的指针            stackaddr  返回获取的栈地址            stacksize  返回获取的栈大小    说  明:获取线程的堆栈地址和大小    头文件:#include <pthread.h>12、设置线程堆栈区int pthread_attr_setstack(pthread_attr_t *attr, void *stackaddr, size_t stacksize);    返回值:若是成功返回0,否则返回错误的编号    形  参:            attr       指向一个线程属性的指针            stackaddr  线程的堆栈地址:应该是可移植的,对齐页边距的                       可以用posix_memalign来进行获取            stacksize  线程的堆栈大小:应该是页大小的整数倍    说  明:设置堆栈区,将导致pthread_attr_setguardsize失效。    头文件:#include <pthread.h>13、获取线程堆栈地址int pthread_attr_getstackaddr(pthread_attr_t *attr, void **stackaddr);    返回值:若是成功返回0,否则返回错误的编号    形  参:            attr       指向一个线程属性的指针            stackaddr  返回获取的栈地址    说  明:函数已过时,一般用pthread_attr_getstack来代替    头文件:#include <pthread.h>14、设置线程堆栈地址int pthread_attr_setstackaddr(pthread_attr_t *attr, void *stackaddr);    返回值:若是成功返回0,否则返回错误的编号    形  参:            attr       指向一个线程属性的指针            stackaddr  设置线程堆栈地址    说  明:函数已过时,一般用pthread_attr_setstack来代替    头文件:#include <pthread.h>15、获取线程堆栈大小int pthread_attr_getstacksize(pthread_attr_t *attr, size_t *stacksize);    返回值:若是成功返回0,否则返回错误的编号    形  参:            attr       指向一个线程属性的指针            stacksize  返回线程的堆栈大小    说  明:获取线程堆栈大小    头文件:#include <pthread.h>16、设置线程堆栈大小int pthread_attr_setstacksize(pthread_attr_t *attr, size_t stacksize);    返回值:若是成功返回0,否则返回错误的编号    形  参:            attr       指向一个线程属性的指针            guardsize  线程的栈保护区大小:应该是页大小的整数倍    说  明:设置线程堆栈大小:    头文件:#include <pthread.h>17、获取线程的调度策略int pthread_attr_getschedpolicy(pthread_attr_t *attr, int *policy);    返回值:若是成功返回0,否则返回错误的编号    形  参:            attr       指向一个线程属性的指针            policy     返回线程的调度策略    说  明:获取线程的调度策略    头文件:#include <pthread.h>18、设置线程的调度策略int pthread_attr_setschedpolicy(pthread_attr_t *attr, int policy);    返回值:若是成功返回0,否则返回错误的编号    形  参:            attr       指向一个线程属性的指针            policy     线程的调度策略,有如下三种:                        SCHED_FIFO    先入先出策略                        SCHED_RR      轮转调度,类似于 FIFO,但加上了时间轮片算法                        SCHED_OTHER      系统默认策略    说  明:设置线程的调度策略    头文件:#include <pthread.h>19、获取线程的调度参数int pthread_attr_setschedparam(pthread_attr_t *attr, const struct sched_param *param);    返回值:若是成功返回0,否则返回错误的编号    形  参:            attr       指向一个线程属性的指针            param      返回获取的调度参数,该结构仅有一个从参数,如下                        struct sched_param                         {                            int sched_priority; /* Scheduling priority */                        };    说  明:获取线程的调度参数    头文件:#include <pthread.h>20、设置线程的调度参数int pthread_attr_getschedparam(pthread_attr_t *attr, struct sched_param *param);    返回值:若是成功返回0,否则返回错误的编号    形  参:            attr       指向一个线程属性的指针            param      要设置的调度参数    说  明:设置线程的调度参数    头文件:#include <pthread.h>21、获取线程是否继承调度属性int pthread_attr_getinheritsched(pthread_attr_t *attr, int *inheritsched);    返回值:若是成功返回0,否则返回错误的编号    形  参:            attr          指向一个线程属性的指针            inheritsched  返回继承调度属性的设置    说  明:获取线程是否继承调度属性    头文件:#include <pthread.h>22、设置线程是否继承调度属性int pthread_attr_getinheritsched(pthread_attr_t *attr, int *inheritsched);    返回值:若是成功返回0,否则返回错误的编号    形  参:            attr       指向一个线程属性的指针            guardsize  设置线程是否继承调度属性                        PTHREAD_INHERIT_SCHED:调度属性将继承于正创建的线程                                               attr中的设置将被忽略                        PTHREAD_EXPLICIT_SCHED 调度属性将被设置为attr中指定的属性值    说  明:    头文件:#include <pthread.h>
0 0