• 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>
  • 相关阅读:
    共享内存基本操作
    mmap 操作
    busybox 安装问题解决
    ubuntu apt-get failed
    live555 学习资料
    循环队列实现
    socket 聊天室实现
    socket 映射服务器--(可处理多客户端连接(fork),显示退出信息)
    socket 映射服务器程序
    vector和list插入性能对比
  • 原文地址:https://www.cnblogs.com/Ph-one/p/4444202.html
Copyright © 2020-2023  润新知