Linux下线程属性设置函数

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>

猜你喜欢

转载自blog.csdn.net/AMDDMA/article/details/81207657
今日推荐