亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

線程基本編程——線程函數大全

2019-11-14 10:16:51
字體:
來源:轉載
供稿:網友
索引:1.創建線程pthread_create2.等待線程結束pthread_join3.分離線程pthread_detach4.創建線程鍵pthread_key_create5.刪除線程鍵pthread_key_delete6.設置線程數據pthread_setspecific7.獲取線程數據pthread_getspecific8.獲取線程標示符pthread_self9.比較線程pthread_equal10.一次執行pthread_once11.出讓執行權sched_yield12.修改優先級pthread_setschedparam13.獲取優先級pthread_getschedparam14.發送信號pthread_kill15.設置線程掩碼pthread_sigmask16.終止線程pthread_exit17.退出線程pthread_cancel18.允許/禁止退出線程pthread_setcancelstate19.設置退出類型pthread_setcanceltype20.創建退出點pthread_testcancel21.壓入善后處理函數22.彈出善后處理函數--------------------------------------------------------------------------------1.創建線程pthread_create#include int pthread_create(pthread_t *tid, const pthread_attr_t *tattr, void *(*start_routine)(void *), void *arg);返回值:函數成功返回0。任何其他返回值都表示錯誤。創建一個線程。參數tattr中含有初始化線程所需要的屬性,start_routine是線程入口函數的地址,當start_routine返回時,相應的線程就結束了。當函數成功時,線程標示符保存在參數tid指向的內存中。如果不指定屬性對象,將其置為NULL,則創建一個缺省的線程,有如下屬性:非綁定的; 未分離的; 由一個缺省大小的堆棧; 具有和父線程一樣的優先級。 注意:在創建子線程時,傳給子線程的輸入參數最好是由malloc()函數返回的指針或指向全局變量的指針,而不要是指向局部變量的指針。要保證子線程處理參數時,該區域仍然有效。--------------------------------------------------------------------------------2.等待線程結束pthread_join#include int pthread_join(pthread_t tid, void **status);返回值:函數成功返回0。任何其他返回值都表示錯誤。等待一個線程結束。該函數阻塞調用它線程,直到參數tid指定的線程結束。tid指定的線程必須在當前進程中,同時tid指定的線程必須是非分離的。不能有多個線程等待同一個線程終止。如果出現這種情況,一個線程將成功返回,別的線程將返回錯誤ESRCH。如果參數status不為NULL,則將線程的退出狀態放在status指向的內存中。--------------------------------------------------------------------------------3.分離線程pthread_detach#include int pthread_detach(pthread_t tid);返回值:函數成功返回0。任何其他返回值都表示錯誤。將非分離的線程設置為分離線程。即通知線程庫在指定的線程終止時回收線程占用的內存等資源。在一個線程上使用多次pthread_detach的結果是不可預見的。--------------------------------------------------------------------------------4.創建線程鍵pthread_key_create#include int pthread_key_create(pthread_key_t *key, void (*destructor)(void*));返回值:函數成功返回0。任何其他返回值都表示錯誤。在進程中分配一個鍵值,這個鍵被用來表示一個線程數據項。這個鍵對進程中所有的線程都是可見的。剛創建線程數據鍵時,在所有線程中和這個鍵相關聯的值都是NULL。函數成功返回后,分配的鍵放在key參數指向的內存中,必須保證key參數指向的內存區的有效性。如果指定了解析函數destructor,那么當線程結束時并且將非空的值綁定在這個鍵上,系統將調用destructor函數,參數就是相關線程與這個鍵綁定的值。綁定在這個鍵上的內存塊可由destructor函數釋放。--------------------------------------------------------------------------------5.刪除線程鍵pthread_key_delete#include int pthread_key_delete(pthread_key_t key);返回值:函數成功返回0。任何其他返回值都表示錯誤。刪除線程數據鍵。這個鍵占用的內存將被釋放,該鍵再被引用將返回錯誤。在調用該函數之前,程序必須釋放和本線程相關聯的資源,該函數不會引發線程數據鍵的解析函數。--------------------------------------------------------------------------------6.設置線程數據pthread_setspecific#include int pthread_setspecific(pthread_key_t key, const void *value);返回值:函數成功返回0。任何其他返回值都表示錯誤。設置和某個線程數據鍵綁定在一起的線程專用數據(一般是指針)。函數不會釋放原來綁定在鍵上的內存,給一個鍵值綁定新的指針時,必須釋放原指針指向的內存,否則會發生內存泄漏。--------------------------------------------------------------------------------7.獲取線程數據pthread_getspecific#include void pthread_getspecific(pthread_key_t key, void **value);無返回值。出錯時value指向NULL。獲取綁定在線程數據鍵上的值,并在指定的位置存儲取來的值。--------------------------------------------------------------------------------8.獲取線程標示符pthread_self#include pthread_t pthread_self(void);返回當前線程的標示符。--------------------------------------------------------------------------------9.比較線程pthread_equal#include int pthread_equal(pthread_t tid1, pthread_t tid2);如果tid1和tid2相同,函數返回一個非0值,否則返回0。如果tid1或tid2中任何一個是非法值,則返回將是不可預料的。--------------------------------------------------------------------------------10.一次執行pthread_once#include int pthread_once(pthread_once_t *once_control, void (*init_routine)(void));返回值:函數成功返回0。任何其他返回值都表示錯誤。函數用來調用初始化函數。如果已經有線程通過pthread_once調用過這個初始化函數一次,那么以后通過pthread_once函數再調用這個初始化函數將無效。參數once_control決定了相應的初始化函數是否被調用過。它一般如下使用:[static] pthread_once_t once_control = PTHREAD_ONCE_INIT。--------------------------------------------------------------------------------11.出讓執行權sched_yield#include int sched_yield(void);返回值:函數成功返回0。-1表示錯誤。把當前線程的執行權(即對處理器的控制權)出讓給另一個有相同或更高優先級的線程。--------------------------------------------------------------------------------12.修改優先級pthread_setschedparam#include int pthread_setschedparam(pthread_t tid, int policy, const struct sched_param *param);返回值:函數成功返回0。任何其他返回值都表示錯誤。修改線程的優先權。--------------------------------------------------------------------------------13.獲取優先級pthread_getschedparam#include int pthread_getschedparam(pthread_t tid, int policy, struct schedparam *param);返回值:函數成功返回0。任何其他返回值都表示錯誤。獲取線程的優先級。--------------------------------------------------------------------------------14.發送信號pthread_kill#include int pthread_kill(pthread_t tid, int sig);返回值:函數成功返回0。任何其他返回值都表示錯誤。向tid指定的線程發送一個信號,tid指定的線程必須和當前線程在同一個進程中。當sig參數為0時,函數將進行錯誤檢查,不發送信號,這常常用來檢查tid的合法性。--------------------------------------------------------------------------------15.設置線程掩碼pthread_sigmask#include #include int pthread_sigmask(int how, const sigset_t *new, sigset_t *old);返回值:函數成功返回0。任何其他返回值都表示錯誤。改變或檢驗當前線程的信號掩碼。參數how表示對當前信號掩碼進行什么操作,有如下值:SIG_BLOCK、SIG_UNBLOCK、SIG_SETMASK。當參數new為NULL時,不論how的值是什么,當前線程的信號掩碼都不會改變。舊的信號掩碼保存在參數old指向的內存中,當old不為NULL時。--------------------------------------------------------------------------------16.終止線程pthread_exit#include void pthread_exit(void *status);終止當前線程,所有綁定在線程數據鍵上的內存將被釋放。如果當前線程是非分離的,那么這個線程的標示符合退出代碼將被保留,直到其他線程用pthread_join來等待當前線程的終止。如果當前線程是分離的,status將被忽略,線程標示符將被立即回收。若status不為NULL,線程的退出代碼被置為status參數指向的值。--------------------------------------------------------------------------------17.退出線程pthread_cancel#include int pthread_cancel(pthread_t thread);返回值:函數成功返回0。任何其他返回值都表示錯誤。退出一個線程。如何響應退出請求取決于目標線程的狀態。--------------------------------------------------------------------------------18.允許/禁止退出線程pthread_setcancelstate#include int pthread_setcancelstate(int state, int *oldstate);返回值:函數成功返回0。任何其他返回值都表示錯誤。參數state取值為PTHREAD_CANCEL_ENABLE或PTHREAD_CANCEL_DISABLE。--------------------------------------------------------------------------------19.設置退出類型pthread_setcanceltype#include int pthread_setcanceltype(int type, int *oldtype);返回值:函數成功返回0。任何其他返回值都表示錯誤。將線程退出類型設置為延遲類型或異步類型。參數type的取值為PTHREAD_CANCEL_DEFERRED或PTHREAD_CANCEL_ASYNCHRONOUS。當一個線程被創建后,缺省值是延遲類型。在異步方式下,線程可以在執行的任何時候被退出。--------------------------------------------------------------------------------20.創建退出點pthread_testcancel#include void pthread_testcancel(void);無返回值。設置線程的退出點。只有當線程的退出狀態是允許退出的,而且線程的退出類型是延遲時,調用該函數才有效。如果調用時線程的退出狀態是禁止的,則該調用不起作用。小心使用該函數,只有在能夠安全的被退出的地方才能夠設置退出點。--------------------------------------------------------------------------------21.壓入善后處理函數#include void pthread_cleanup_push(void (*routine)(void *), void *args);將一個善后處理函數壓入善后處理函數堆棧。--------------------------------------------------------------------------------22.彈出善后處理函數#include void pthread_cleanup_pop(int execute);從善后處理函數堆棧中彈出一個善后處理函數。如果參數execute非0,則執行彈出的函數;如果參數為0,則不執行彈出函數。如果一個線程顯式或隱式的調用pthread_exit()函數或線程接受了退出請求,線程庫實際上將會以非0參數調用pthread_cleanup_pop函數。轉自:http://blog.chinaunix.net/space.php?uid=13760159&do=blog&cuid=1225657
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美色播在线播放| 国产精品jizz在线观看麻豆| 久久国产一区二区三区| 色妞色视频一区二区三区四区| 日韩电影免费在线观看中文字幕| 国产精品在线看| 亚洲一区二区在线播放| 57pao成人国产永久免费| 日本久久久久久| 国产精品一区二区三区免费视频| 久久99久久亚洲国产| 精品久久久一区二区| 亚洲国产私拍精品国模在线观看| 亚洲精品一区中文| 91精品久久久久久| 亚洲精品自在久久| 亚洲精品欧美一区二区三区| 69av视频在线播放| 国产精品精品久久久| 日韩av日韩在线观看| 亚洲欧美日韩精品久久亚洲区| 亚洲美腿欧美激情另类| 国产欧美精品一区二区三区介绍| 欧美成人精品激情在线观看| 欧美日韩国产综合视频在线观看中文| xxav国产精品美女主播| 国产精品毛片a∨一区二区三区|国| 精品色蜜蜜精品视频在线观看| 欧美限制级电影在线观看| 国产精品女主播视频| 一本一本久久a久久精品牛牛影视| 日韩精品高清在线| 91av在线视频观看| 黄色一区二区在线观看| 国产97在线|亚洲| 国产免费观看久久黄| 国产精品欧美亚洲777777| 亚洲国产小视频| 久久久av电影| 色琪琪综合男人的天堂aⅴ视频| 777777777亚洲妇女| 国产精品免费电影| 亚洲人成啪啪网站| 午夜精品久久久久久久99热| 欧美成人黑人xx视频免费观看| 久热精品视频在线观看| 国产91精品青草社区| 久久久电影免费观看完整版| 久久久精品在线| 国产aⅴ夜夜欢一区二区三区| 亚洲free性xxxx护士hd| 精品日本美女福利在线观看| 日韩欧美精品网址| 亚洲人成77777在线观看网| 国产精品成人一区二区三区吃奶| 日韩一区视频在线| 大荫蒂欧美视频另类xxxx| 国产美女直播视频一区| 国内精品视频久久| 亚洲自拍偷拍色片视频| 国产suv精品一区二区三区88区| 国产精品久久久久久久久久三级| 91探花福利精品国产自产在线| 亚洲91av视频| 亚洲精品国精品久久99热| 日韩中文字幕在线视频播放| 久久在精品线影院精品国产| 亚洲午夜色婷婷在线| 久久天天躁狠狠躁夜夜爽蜜月| 亚洲第一国产精品| 最近中文字幕日韩精品| 性欧美亚洲xxxx乳在线观看| 久久久久亚洲精品成人网小说| 亚洲男人天堂2023| 最近2019好看的中文字幕免费| 全色精品综合影院| 最近免费中文字幕视频2019| 乱亲女秽乱长久久久| 欧美中文在线免费| 国产精品18久久久久久麻辣| 动漫精品一区二区| 久久久精品日本| 操日韩av在线电影| 91香蕉电影院| 伊人久久五月天| 97在线精品国自产拍中文| 日韩电影免费在线观看| 久久99久国产精品黄毛片入口| 亚洲人永久免费| 国内精品视频久久| 亚洲影视中文字幕| 亚洲免费av网址| 狠狠色香婷婷久久亚洲精品| 亚洲欧美精品中文字幕在线| 国产亚洲精品日韩| 日韩中文字幕在线观看| 亚洲sss综合天堂久久| 久热精品视频在线观看| 亚洲香蕉在线观看| 日韩欧美在线视频观看| 91久久精品在线| 伊人一区二区三区久久精品| 久久精品99国产精品酒店日本| 精品av在线播放| 日韩精品免费视频| 国外视频精品毛片| 欧美国产中文字幕| 亚洲国产毛片完整版| 久久久精品电影| 午夜精品久久久久久久男人的天堂| 国产丝袜视频一区| 国产噜噜噜噜噜久久久久久久久| 美女国内精品自产拍在线播放| 国产又爽又黄的激情精品视频| 国产精品视频免费在线| 成人免费淫片视频软件| 中文欧美日本在线资源| 久久91亚洲人成电影网站| 国产精品亚洲精品| 在线播放精品一区二区三区| 国产精品成人播放| 欧美性猛交xxxx免费看久久久| 欧美成人一区二区三区电影| 国产精品91在线观看| 日韩久久免费视频| 久久精品国产亚洲精品2020| 欧美视频在线观看免费网址| 国产成人精品久久亚洲高清不卡| 欧美亚洲成人免费| 成人黄色免费在线观看| 亚洲人永久免费| 亚洲裸体xxxx| 日韩极品精品视频免费观看| 亚洲欧美精品中文字幕在线| 高清在线视频日韩欧美| 国产精品老女人精品视频| 亚洲国产精品悠悠久久琪琪| 国产精品7m视频| 日韩av在线最新| 国产午夜一区二区| 亚洲人成毛片在线播放| 亚洲福利小视频| 欧美亚洲国产视频小说| 欧美午夜宅男影院在线观看| www.99久久热国产日韩欧美.com| 亚洲男人天堂手机在线| 欧美精品在线观看91| 热re99久久精品国产66热| 最近日韩中文字幕中文| 色综合伊人色综合网| 性欧美视频videos6一9| 国产精品欧美在线| 久久久极品av| 美女视频黄免费的亚洲男人天堂| 欧美日韩亚洲精品内裤| 亚洲爱爱爱爱爱| 国产精品美女999| 久久久999精品视频| 国产成人精品免费视频| 亚洲精品欧美极品| 国产精品亚洲一区二区三区| 亚洲成人xxx| 亚洲片av在线| 91亚洲国产成人久久精品网站|