pthread_cancel(thread_t thread)函数可以取消一个线程的执行。有两种取消方式:立即取消和延迟取消。通过
pthread_setcanceltype(PTHREAD_CANCEL_DEFERRED, NULL);和pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS, NULL); 设置。延迟取消不会使得线程立即取消,只是给线程发送一个信号。线程会在取消点检查是否有信号,有信号才取消。也就是延迟到取消点取消。取消点有 IO(printf也是IO),pthread_mutex_lock(),phtread_join(),phtread_testcancel()函数等。目前,我没有 找到线程取消的回调函数写法。也就是线程被取消后,可能来不及释放它的资源。
pthread_cancel
本文介绍了pthread_cancel函数在C语言多线程中的应用,区分了立即和延迟取消,强调了取消点如IO操作和同步锁的影响,并指出当前缺乏线程取消时的回调机制,可能导致资源释放问题。

被折叠的 条评论
为什么被折叠?



