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

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

分享到微博請遵守國家法律
湾仔区| 南皮县| 成武县| 连城县| 保山市| 西昌市| 竹山县| 永丰县| 呼和浩特市| 龙南县| 锦州市| 祁东县| 万载县| 黑水县| 南丰县| 新宁县| 沙河市| 边坝县| 武夷山市| 新源县| 垫江县| 铜山县| 察隅县| 唐河县| 海淀区| 孝感市| 阿尔山市| 白玉县| 石棉县| 界首市| 自贡市| 论坛| 潮州市| 彭阳县| 贵溪市| 海原县| 葫芦岛市| 平舆县| 华阴市| 延边| 化德县|