国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

線程基本操作 (4)線程清理函數(shù)

2022-10-28 10:00 作者:GXTon_阿通  | 我要投稿

類似于進程的atexit()
在線程運行完之后,如果想要在線程退出時,執(zhí)行某個操作.
就可以用到線程清理函數(shù).

與進程不同的是,線程可以注冊多個清理函數(shù).
這些清理函數(shù)會記錄在線程的棧中.
棧是先進后出.所以注冊順序和執(zhí)行順序是相反的.

下面是添加和移除清理函數(shù)的函數(shù):

pthread_cleanup_pop()可以清除棧中最頂層的,也就是最后添加的清理函數(shù).


觸發(fā)線程清理函數(shù)執(zhí)行的條件:
1,線程調(diào)用了pthread_exit()退出時;
2,線程響應(yīng)了取消請求時;
3,用非0參數(shù)調(diào)用pthread_cleanup_pop();
(pthread_cleanup_pop()的參數(shù)如果傳入的是0,那么清理函數(shù)不會被調(diào)用,而是被移除; 如果參數(shù)為非0,那么就會調(diào)用清理函數(shù);)

pthread_clean_push()和pthread_cleanup_pop()雖然是函數(shù),但是他們是用宏實現(xiàn)的.
其中分別包含 { 和 },所以兩個"函數(shù)"需要成對實現(xiàn).


例子:

對上面代碼進行編譯,

編譯方法一:可以使用 gcc -o main main.c -lpthread

編譯方法二:可以使用make,(前提是編寫一個makefile)

運行結(jié)果:


線程基本操作 (4)線程清理函數(shù)的評論 (共 條)

分享到微博請遵守國家法律
鄂托克旗| 绥芬河市| 台北县| 漾濞| 西宁市| 泸定县| 赤水市| 年辖:市辖区| 江津市| 资阳市| 邹城市| 闵行区| 旅游| 富顺县| 宿州市| 河东区| 永宁县| 石棉县| 建瓯市| 离岛区| 尉氏县| 体育| 济宁市| 漯河市| 澎湖县| 桓台县| 广昌县| 虎林市| 若尔盖县| 苏尼特右旗| 宜良县| 蛟河市| 四川省| 梧州市| 疏附县| 江源县| 即墨市| 保德县| 社旗县| 仁怀市| 樟树市|