|
发表于 2005-2-22 16:47:12
|
显示全部楼层
异步取消(PTHREAD_CANCEL_ASYNCHRONOUS)就是“立即取消”,当线程收到取消请求时立即结束其执行。
与之相对的是推迟取消(PTHREAD_CANCEL_DEFERRED),当线程收到取消请求,等到达取消点时才结束其执行。
默认情况下是推迟取消,即当调用pthread_cancel,被取消线程只在你指定的取消点上取消,但“取消点”并不仅限于调用 pthread_testcancel 的位置。还包括pthread_join, pthread_cond_wait, pthread_cond_timedwait, sem_wait, sigwait。
不妨自己编程序一一验证一下,这样最可靠。 参考 man pthread_cancel。 |
|