【发布时间】:2013-05-07 18:37:02
【问题描述】:
我在same situation as this guy,但我不太明白答案。
问题:
- 线程 1 在阻塞的套接字上调用
accept。 - 线程 2 在此套接字上调用
close。 - 线程 1 继续阻塞。我希望它从接受中返回。
解决办法:
你应该做的是向被阻塞的线程发送一个信号 接受。这将给它 EINTR 并且它可以干净地脱离 - 并且 然后关闭套接字。不要从一个线程以外的线程关闭它 使用它。
我不知道这里该怎么做——当线程 1 接收到信号时,accept 已经阻塞,并且在信号处理程序完成后将继续阻塞。
- 答案的真正含义是我应该做什么?
- 如果线程 1 的信号处理程序可以做一些会导致
accept立即返回的事情,为什么线程 2 不能在没有信号的情况下做同样的事情? - 有没有其他方法可以在没有信号的情况下做到这一点?我不想增加对图书馆的警告。
【问题讨论】:
标签: linux multithreading sockets