【问题标题】:How can I tell a thread that is currently or will soon be blocking in poll() to do something?我如何告诉当前或即将在 poll() 中阻塞的线程做某事?
【发布时间】:2012-04-23 18:23:26
【问题描述】:

我有一个线程 A 在循环中调用 poll()。该线程负责传入和传出连接的 IO。但是,当线程 B 打开一个传出连接时,它必须以某种方式将其交给 A。您认为在线程 A(读取端)和 B(写入端)之间有一个管道,B 在打开套接字后写入该管道是个好主意吗?

【问题讨论】:

    标签: c++ linux pthreads pipe


    【解决方案1】:

    这听起来很合理。 poll 应该很高兴看到你的套接字旁边的管道。

    【讨论】:

    • 好的,谢谢 - 如果没有更好的方法,我想我必须这样做。
    【解决方案2】:

    您可以考虑使用socket pair,而不是实际的管道。您可以创建一个unix-domain 套接字对并使用send()sendmsg() 将消息发送到阻塞线程。这种方法可能对您更方便。 Unix 域套接字还支持在进程之间传递文件描述符,尽管这对您的应用程序来说太过分了。

    另一种方法是使用信号中断对poll() 的调用。见this question

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-10-06
      • 2016-09-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多