线程的取消选项包含两方面的内容:
- 取消属性
- 取消类型
取消属性
取消属性包括PTHREAD_CANCEL_ENABLE和PTHREAD_CANCEL_DISABLE
当取消属性是PTHREAD_CANCEL_DISABLE时,pthread_cancle调用并不会杀死线程,相反,取消请求对这个线程来说是未决的。当线程的取消属性为PTREAD_CANCEL_ENABLE时,线程将在下一个取消点对所有的未决的取消请求进行处理。
取消点
所谓的取消点是线程检查是否被取消并按照请求进行处理的一个位置,取消点是一系列的函数。
如果线程在很长一段时间内都没有调用取消点的函数,那么可以调用pthread_testcancel函数在程序中自己添加取消点。
取消类型
取消类型分为异步取消和延迟取消,默认为延迟取消。
延迟取消:需要到取消点时才会执行相应的取消动作
异步取消:线程可以在任意时间取消,不是非得等到取消点才能取消