python - 如何从python中的套接字编程中的另一个线程唤醒被select.poll.poll()函数阻塞的线程?

标签 python sockets

我无法唤醒被 poll.poll() 函数阻塞的线程。有人可以帮我吗?

最佳答案

处理这个问题的方法是在传递给 poll() 的描述符列表中包含一个额外的文件描述符。对于该描述符,等待读取准备就绪。让任何其他线程想要唤醒等待 poll() 的线程 write 到那个额外的描述符。在那一点上,调用 poll() 的线程恢复执行,看到额外的描述符是唤醒它的那个,然后做任何事情。

最初获取这个额外文件描述符的正常方法是使用 pipe() 打开一个未命名的管道。这样你就有了两个描述符:一个是你在 poll() 中传递读取等待,另一个是你写入以唤醒等待 poll() 的线程。

关于python - 如何从python中的套接字编程中的另一个线程唤醒被select.poll.poll()函数阻塞的线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12050072/

相关文章:

python - 在一条语句中将文件拆分为字典

python - 如何用PyMC3得到累积分布函数?

python - 如何在虚拟环境中放置自定义 Jupyter 内核?

python - Pandas 选择具有给定时间戳间隔的行

c++ - 将 IP 地址从 sockaddr 转换为 in_addr

python - Boto3 - 将文件从一个文件夹递归复制到 S3 中的另一个文件夹

php - PHP 中是否可以确定文件描述符的状态?

java - HttpURLConnection 连接重置错误处理

c++ - 为什么 setsockopt( TCP_REPAIR ) 在进程具有 root 权限时返回 EPERM?

c++ - 多线程服务器在一个线程中处理多个客户端