pthread_join导致accept()终止

时间:2011-06-09 12:58:44

标签: join pthreads

我在accept()上等待连接时阻塞了连接的服务器线程。在外部我尝试通过调用pthread_cancel(),然后调用pthread_join()来终止线程。在调用join时,我的程序以SIGABRT终止。

我很可能去分离线程,并使用超时检查连接的select(),然后我可以“发信号”它退出。所以,我知道这是一个解决方案,但是好奇的类型,我想知道为什么第一个解决方案不起作用。

1 个答案:

答案 0 :(得分:0)

我认为你因为pthread_cancel()而得到程序终止SIGABRT - 当被阻塞的线程获得信号时,它可能会死掉。信号传递直到调用pthread_cancel()返回后才会发生,所以它看起来就像是因为连接调用而发生。

要查看我的想法是否正确,我会插入一段时间(1);在pthread_cancel()之后循环,看看你是否仍然得到了SIGABRT。