« 上一篇

linux线程之取消点

linux下创建的线程可以被取消,但是前提时线程中存在取消点,所谓的取消点也就是一系列函数,线程中存在这些函数,即该线程可以在运行到这些函数时,被其他线程发送的线程取消命令取消掉。

通过命令"man 7 pthreads"可以查看有哪个函数是取消点,

如图所示,输入上述命令后会列出来一些取消点函数,最先列出来的这些,比如accept(),是要求必须为取消点的函数,

在往下一段,列出来了一些函数,是可能被作为取消点的函数,

继续往下,可能被作为取消点的函数,就包括了printf(),所以我测了下在新的线程中,执行for()循环语句,循环中不包含sleep()这种一定是取消点的函数,而是包含了printf()函数,而printf()函数并不是在一定是取消点的函数列表中,但是线程仍然被取消了,所以就有点奇怪,然后就看到了原来printf()可能是取消点,而在我的测试中,明显printf()也是一个取消点函数。