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

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

分享到微博請遵守國家法律
汾阳市| 灵山县| 新津县| 叙永县| 泊头市| 安泽县| 新竹市| 阿克陶县| 深水埗区| 庆城县| 花垣县| 蕲春县| 九江县| 苏尼特右旗| 太仆寺旗| 北川| 乐业县| 岳西县| 巴林左旗| 尉犁县| 广宁县| 庆云县| 汤原县| 横峰县| 会昌县| 丽水市| 安溪县| 射阳县| 沁源县| 兴业县| 安龙县| 佳木斯市| 鹿泉市| 获嘉县| 于都县| 繁峙县| 柳州市| 定襄县| 新巴尔虎左旗| 黑龙江省| 山丹县|