五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(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ù)的評論 (共 條)

分享到微博請遵守國家法律
舟山市| 夹江县| 永胜县| 宜阳县| 门头沟区| 兴山县| 汝城县| 长葛市| 临朐县| 闸北区| 遵化市| 嘉峪关市| 富宁县| 长岭县| 新蔡县| 沂南县| 缙云县| 闸北区| 大田县| 贵德县| 沂源县| 剑阁县| 道真| 安丘市| 鄂伦春自治旗| 新邵县| 纳雍县| 五指山市| 宿州市| 吴旗县| 淮阳县| 周宁县| 新干县| 长汀县| 敦化市| 德钦县| 当阳市| 措美县| 高尔夫| 华蓥市| 柞水县|