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>
發佈了112 篇原創文章 · 獲贊 66 · 訪問量 44萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章