通常,取消线程并不是一个好主意。只要有可能,最好有一个共享标志,线程可以使用它来跳出循环。这样,您将让线程执行在实际退出之前可能需要执行的任何清理。
在没有真正取消线程的问题上,POSIX规范确定了一组取消点(man 7 pthreads)。只能在这些点取消线程。如果您的无限循环不包含取消点,则可以通过调用来添加一个
pthread_testcancel。如果
pthread_cancel已被调用,则此时将对其执行操作。

通常,取消线程并不是一个好主意。只要有可能,最好有一个共享标志,线程可以使用它来跳出循环。这样,您将让线程执行在实际退出之前可能需要执行的任何清理。
在没有真正取消线程的问题上,POSIX规范确定了一组取消点(man 7 pthreads)。只能在这些点取消线程。如果您的无限循环不包含取消点,则可以通过调用来添加一个
pthread_testcancel。如果
pthread_cancel已被调用,则此时将对其执行操作。