【发布时间】:2011-01-11 17:45:47
【问题描述】:
我正在 Windows XP 应用程序中使用 TCP 实现对等 IPC。
我在 Python 2.6.6 中使用 select 和 socket 模块。
我有三个 TCP 线程,一个通常在 select() 上阻塞的读取线程,一个通常等待事件的写入线程(该事件表明有东西要写入 TCP)和一个接受连接的侦听线程.
如果我开始一个新连接或关闭一个当前连接,那么我需要中断读取选择并重新启动它,以便它也侦听新接受的套接字。
在winsock 下,我可以调用WSACancelBlockingCall,这将优雅地中断选择。
所以我的问题是:是否可以在不使用poll() 的情况下以pythonic 方式完成所有这些操作?
谢谢
--DM
【问题讨论】:
-
我不确定我是否理解 poll 与 select 有何不同 - 它们都需要超时。 Select 可以无限期地等待。两者都可以立即返回。无论我使用哪个,如果我在不同的线程上接受一个新的套接字,我仍然需要打破等待。