最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

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

線程基本操作 (4)線程的取消

2022-09-25 14:52 作者:GXTon_阿通  | 我要投稿

應(yīng)用場景:

比如,在搜索東西的時候.每個線程負責搜索一個目錄,當有一個線程搜索到了要找的內(nèi)容.那么其他所有線程就沒有尋找的必要了.所以就可以取消搜索線程.程序進行下一步操作了...

pthread_join()和wait()性質(zhì)一樣,是不能收回正在運行的線程的.
所以需要新的函數(shù): pthread_cancel()

如果想要殺死一個線程,就先用 pthread_cancel() 然后再用 pthread_join().

用man查一下:

注意問題:

如果一個線程A中正在運行著程序,打開了很多文件。
線程B? 要取消 線程A, 這個時候,線程A里面的文件都沒有來的及關(guān)閉,就會有bug。
怎么解決,就是在線程A每次打開一個文件的時候,就要掛一個鉤子函數(shù),鉤子函數(shù)負責關(guān)閉對應(yīng)的文件。

但是上面還有一個問題。如果沒有來得及掛鉤子函數(shù)呢?
這里涉及到取消狀態(tài)的問題。

被取消的線程A,可以設(shè)置:
不允許取消:對取消信號不理睬.
允許取消: 異步取消;推遲取消(推遲到cancel點再相應(yīng)。cancel點 POSIX規(guī)定的, 都是可能引發(fā)阻塞的系統(tǒng)調(diào)用。)
所以,沒有來及掛鉤子函數(shù)的這種情況是不會存在的,因為打開文件,掛鉤子函數(shù)之間不要有cancel點就可以了。

cancel點的設(shè)置:
pthread_setcancelstate() 設(shè)置是否被允許取消.
pthread_setcanceltype() 設(shè)置取消方式.異步cancel或推遲cancel.
pthread_testcancel()? 它本身就是一個取消點,函數(shù)本身不做什么.

線程基本操作 (4)線程的取消的評論 (共 條)

分享到微博請遵守國家法律
嘉鱼县| 颍上县| 师宗县| 都江堰市| 淮阳县| 阿巴嘎旗| 湖南省| 同仁县| 龙海市| 靖安县| 萍乡市| 饶河县| 兴安盟| 乳山市| 富阳市| 彰化县| 长宁县| 禹州市| 开平市| 达拉特旗| 潮安县| 出国| 墨脱县| 宁化县| 江孜县| 五大连池市| 读书| 广南县| 敦化市| 红桥区| 裕民县| 临海市| 云浮市| 太康县| 商河县| 岑溪市| 图木舒克市| 昌都县| 牟定县| 尉犁县| 鲜城|