我有一个在循环中调用poll()
的线程A.此线程负责传入和传出连接上的IO。但是,当线程B打开传出连接时,它必须以某种方式将其提供给A.你认为在打开套接字后B写入的线程A(读取端)和B(写入端)之间有一个管道是不是一个好主意?
答案 0 :(得分:4)
这听起来很合理。 poll
应该很高兴看到你的插座旁边的管道。
答案 1 :(得分:1)
您可以使用socket pair而不是实际的管道。您可以创建unix-domain套接字对,并使用send()
或sendmsg()
向阻止的线程发送消息。这种方法对您来说可能更方便。 Unix域套接字也支持在进程之间传递文件描述符,尽管这对你的应用程序来说太过分了。
另一种方法是用信号中断对poll()
的调用。请参阅this question。