国产精品免费无遮挡无码永久视频-国产高潮视频在线观看-精品久久国产字幕高潮-国产精品99精品无码视亚

迅為i.MX6ULL終結者線程基礎線程終止與回收

發布時間:2021-3-8 15:37    發布者:落風
線程終止:
1.start_routine回調函數執行return;
2.線程自身調用pthread_exit();
3.其他線程調用pthread_cancel(ID)將此進程終止;
任意線程調用exit()使整個進程退出。

線程回收:線程默認joinable狀態,終止后需使用pthread_join回收資源;將子線程使用pthread_detach從主線程分離后處于unjoinable狀態,系統等線程退出后自動回收資源。
常用的 函數調用如下:
pthread_exit():結束本線程
#include
void pthread_exit(void *retval);
參數含義:
retval:線程返回值,其他線程調用pthread_join()接收。

pthread_cancel():向指定線程發出取消請求,使用pthread_join回收,
#include
int pthread_cancel(pthread_t thread);
參數含義:
thread:要終止的線程ID;
返回值:執行成功返回0,成功不一定會讓指定線程終止;執行失敗返回錯誤號,

pthread_join():等待線程終止回收資源,獲取返回值retval,
#include
int pthread_join(pthread_t thread, void **retval);
參數含義:
thread:線程 ID。
retval:存放回收線程的返回值。
返回值:成功返回0,失敗返回錯誤號。

pthread_detach():分離線程,線程終止后系統自動清理,分離后不能再使用join獲取狀態,
#include
int pthread_detach(pthread_t thread);
參數含義:要分離的線程 ID。
返回值:成功返回0,失敗返回錯誤號。
本章代碼在thread/目錄下,實驗1:路徑為:11_Linux系統開發進階\Linux系統編程_章節使用資料。
使用pthread_cancel讓線程退出,pthread_join回收,代碼在cancel.c:

編譯:gcc cancel.c -o cancel -lpthread,運行結果:

使用pthread_exit讓線程退出,pthread_join回收線程資源,代碼在/thread/exit/目錄下,
線程依次使用pthread_exit退出,然后pthread_join依次回收線程,main.c:

編譯運行,可以看到線程按順序依次退出并打印pthread_exit的返回值:

實驗三:
使用pthread_detach()設置線程分離,pthread_exit()退出后,系統自動回收,最后調用pthread_join()發現報錯,說明線程分離后線程自動釋放。
實驗代碼在detach.c:路徑為:11_Linux系統開發進階\Linux系統編程_章節使用資料。


編譯,gcc -o detach detach.c -lpthread,運行結果如下,發現使用pthread_join()報錯:


本文地址:http://www.4huy16.com/thread-761723-1-1.html     【打印本頁】

本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
您需要登錄后才可以發表評論 登錄 | 立即注冊

廠商推薦

  • Microchip視頻專區
  • Microchip第22屆中國技術精英年會上海首站開幕
  • 常見深度學習模型介紹及應用培訓教程
  • Microchip第22屆中國技術精英年會——采訪篇
  • 技術熱潮席卷三城,2025 Microchip中國技術精英年會圓滿收官!
  • 貿澤電子(Mouser)專區
關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
快速回復 返回頂部 返回列表