linux線程的函數整理

線程(thread)

線程創建

int pthread_create(pthread_t *,const pthread_attr_t *,void *(*)(void *),void *);          //類型

pthread_create(&thread_id,&thread_attribute,&thread_fun,&fun_arg);                //形參名

thread_id                         線程id(類型為phread_t)或句柄(類型為phread_t的數組)

thread_attribute            線程屬性(傳遞NULL指針即為標準默認值)

thread_fun                      線程函數名

fun_arg                            函數參數傳入,只可傳入一個參數

errorcode(返回值)        pthread_create的返回值,如果創建操作失敗,將會返回非零值

線程結束

pthread_exit(void* retVal)

retVal                               返回retVal給創建此線程的線程

線程属性設置

pthread_attr_t                                                                    //線程屬性數據結構

pthread_attr_init(pthread_attr_t *attr)                        //初始化屬性結构

pthread_attr_setXXX()                                                      //設置屬性值

pthread_attr_destroy(pthread_attr_t *attr)                //撤除屬性結构

pthread_attr_setstacksize(&my_attributes,(size_t)8192);            //設置屬性棧尺寸

size_t my_stack_size;pthread_attr_getstacksize(&my_attributes, &my_stack_size);                 //获得屬性棧尺寸

線程合併與分離 (阻塞主線程,直到子線程完成並回收其資源)

合併有返回值, 分離沒有返回值

pthread_join(pthread_t thread, void **status)                      //合併(線程, 線程的返回值)

pthread_detach(pthread_t thread)                                //分離(線程)

取得線程id

pthread_t pthread_self()

比較線程

int pthread_equal(pthread_t t1, pthread_t t2)

線程讓出cpu

void sched_yield()

 

屏障(barrier) (同步)

線程到逹屏障會等待,直到所有線程都到逹屏障

pthread_barrier_t b;                                     //屏障數據結構

pthread_barrier_init(&b,NULL,3);             //初始化 (屏障, 屬性, 線程數)

pthread_barrier_wait(&b);                          //線程等待屏障

 

互斥(mutex)

多個線程共享變量,需要使用鎖來限制讀寫

pthread_mutex_lock()                       //上鎖

若可上鎖則直接上鎖,不可上鎖則阻塞至可以上鎖為止

pthread_mutex_trylock()                  //嘗試上鎖

若可上鎖則直接上鎖,不可上鎖則直接返回

pthread_mutex_unlock()                  //解鎖

pthread_mutex_t mymutex = PTHREAD_MUTEX_INITIALIZER               //靜態初始化

pthread_mutex_t *mutex;  

pthread_mutex_init(pthread_mutex_t*,pthread_mutexattr_t*)                      //動態初始化

pthread_mutexattr_t                         //互斥屬性數據結構

pthread_mutexattr_destroy(pthread_mutexattr_t*attr)                        //銷毀互斥屬性

pthread_mutex_destroy()                 //銷毀互斥

RecursiveMutex  (遞歸互斥)

 

條件變量(Condition variable)

操作會先等待一個信號才執行

pthread_cond_t                       //條件變量類型

pthread_cond_t cond= PTHREAD_COND_INITIALIZER;                            //靜態初始化

pthread_cond_init(pthread_cond_t *cond, constpthread_condattr_t *attr);                    //動態初始化

pthread_cond_destroy(pthread_cond_t *cond);                  //刪除

條件變量属性

pthread_condattr_init()               //初始化

pthread_condattr_destroy()            //刪除

等待信號廣播

pthread_cond_wait()                        //等待 (等待信號)

pthread_cond_signal()                     //信號 (發出信號)

pthread_cond_broadcast()               //廣播

 

函數或參數的前綴綜合

pthread_                                     //線程

pthread_attr_                            //線程屬性

pthread_barrier_                      //屏障

pthread_mutex_                       //互斥

pthread_mutexattr_                //互斥屬性

pthread_cond_                         //條件變量

pthread_condattr_                   //條件變量屬性

pthread_key_                            //線程存儲


阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页