pthread_cancel与pthread_join();有什么区别
时间: 2023-06-16 11:04:32 浏览: 289
undefined reference to 'pthread_create'的解决方法
pthread_cancel和pthread_join都是POSIX线程库中的函数,但是它们的作用有所不同。
pthread_cancel函数用于向一个线程发送取消请求,让该线程退出。调用pthread_cancel函数并不会立即终止目标线程,而是等待目标线程在合适的时候处理取消请求。如果目标线程已经被取消或者已经退出,则pthread_cancel函数将不会产生任何效果。需要注意的是,调用pthread_cancel函数并不一定会导致目标线程立即退出,因此需要使用pthread_join函数等待目标线程退出。
pthread_join函数用于等待一个线程退出,并且获取该线程的退出状态。如果目标线程尚未退出,则pthread_join函数会阻塞调用线程,直到目标线程退出为止。需要注意的是,如果目标线程已经被取消,则pthread_join函数会返回PTHREAD_CANCELED作为线程的退出状态。
因此,pthread_cancel和pthread_join的区别在于,pthread_cancel用于向线程发送取消请求,而pthread_join用于等待线程退出并获取线程退出状态。
阅读全文