您好,我有一个有关取消使用互斥量和条件变量的线程的问题。线程具有取消类型的延迟。当我仅使用函数pthread_mutex_lock / unlock和pthread_cond_wait,并且取消请求到达时,线程的取消点仅是pthread_cond_wait。它会锁定互斥锁吗?我不确定线程是否总是使互斥锁解锁。还是pthread_mutex_lock / unlock函数也是取消点?谢谢你。
我怀疑我能说出比文档更好的措辞:
条件等待(无论是否定时)是取消点。当线程的取消类型设置为PTHREAD_CANCEL_DEFERRED时,在条件等待期间对取消请求执行操作的副作用是(实际上)重新获取了互斥体,然后调用第一个取消清除处理程序。效果就好像该线程是未阻塞的,直到从调用返回到pthread_cond_timedwait()或pthread_cond_wait()的返回点为止都可以执行,但是此时通知取消请求,而不是返回到pthread_cond_timedwait()的调用者或pthread_cond_wait(),启动线程取消活动,其中包括调用取消清除处理程序。
同样只要确保您知道其他功能也是取消点即可。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句