关于apue线程11.5节的问题

  11.5写到只有线程1)调用pthread_exit时 2)响应取消请求时 3)用非零execute参数调用pthread_clreanup_pop时 清理函数会由pthread_cleanup_push调度.并且书中给出了一个例子:第一个线程调用return返回,第二个线程调用pthread_exit返回.

  按照书中的结果,调用return的线程不会调用清理程序,因为不满足上述的三个条件.而第二个线程符合条件,会调用清理程序.但是我在自己的Ubuntu系统(16.04)上运行程序时,发现两个线程都调用了线程清理程序.

  在网上看了别人的博客,加上自己的推断.我猜想可能是内核升级以后,线程使用return返回时也隐式调用了pthread_exit,就像线程一样.因此上述的两个线程在退出时都调用了清理程序.

posted @ 2020-05-23 11:59  简讯  阅读(111)  评论(0编辑  收藏  举报