線程的取消選項包含兩方面的內(nèi)容:
- 取消屬性
- 取消類型
取消屬性
取消屬性包括PTHREAD_CANCEL_ENABLE和PTHREAD_CANCEL_DISABLE
當(dāng)取消屬性是PTHREAD_CANCEL_DISABLE時,pthread_cancle調(diào)用并不會殺死線程,相反,取消請求對這個線程來說是未決的。當(dāng)線程的取消屬性為PTREAD_CANCEL_ENABLE時,線程將在下一個取消點對所有的未決的取消請求進(jìn)行處理。
取消點
所謂的取消點是線程檢查是否被取消并按照請求進(jìn)行處理的一個位置,取消點是一系列的函數(shù)。
如果線程在很長一段時間內(nèi)都沒有調(diào)用取消點的函數(shù),那么可以調(diào)用pthread_testcancel函數(shù)在程序中自己添加取消點。
取消類型
取消類型分為異步取消和延遲取消,默認(rèn)為延遲取消。
延遲取消:需要到取消點時才會執(zhí)行相應(yīng)的取消動作
異步取消:線程可以在任意時間取消,不是非得等到取消點才能取消