天天看點

嵌入式,多線程

建立線程:#include 

                 int  pthread_create(pthread_t  *tidp, ,const  pthread_attr_t  *attr,void *(*start_rtn)(void),void *arg)

                 tidp   線程ID              attr 線程屬性,一般為空                函數傳回0代表成功

                 start_rtn  線程要執行的函數             arg  start_rtn的參數

終止線程:程序中的任何一個線程調用exit或_exit,那麼整個程序就會終止。線程的正常退出方式

                 1、線程從啟動例程中傳回,即return

                 2、線程被另一個程序終止

                 3、線程自己調用pthread_exit函數

線程等待:int  pthread  join(pthread_t  tid,void  **rval_ptr)

                           tid  等待退出的線程id

                           rval_ptr   線程退出傳回值的指針

清除:從pthread_cleanup_push到pthread_cleanup_pop之間的程式段中的終止動作(不包括return)會調用pthread_cleanup_push指定的清理函數

            void  pthread_cleanup_push(void(*rtn)(void *),viod  *arg)         将清除函數壓入清除棧

                   rtn  清除函數       arg  清除函數的參數

            void  pthread_cleanup_pop(int  execute)

                   execute 決定執行到pthread_cleanup_pop時是否在彈出清除函數的同時,執行清除函數,1執行,0不執行

繼續閱讀