multithreading - 如何取消阻塞调用,例如 select() 或 read()?

标签 multithreading select blocking interrupt

正如标题所示,如何从另一个线程取消阻塞调用,例如 select() 或(在串行通信和类似的情况下)read()?解决此类问题的传统方法是什么?我想可以使用一个小的超时,这可能会工作得很好,但对我来说这似乎有点黑客攻击。

最佳答案

中断select(2)的传统方式是self-pipe trick 。通过使用描述符非阻塞和处理EAGAIN可以更好地服务输入/输出调用。

关于multithreading - 如何取消阻塞调用,例如 select() 或 read()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7016977/

相关文章:

java ThreadPoolExecutor超时不被遵守

Python 线程似乎无缘无故停止/卡住/挂起?可能的原因?

c++ - vector 上的 push_back 调用导致的段错误(线程 linux)

javascript - jQuery - 在选择中重用变量

sql - 从一个表中选择,插入到另一个表中oracle sql query

multithreading - 如何使用wxpython线程来防止阻塞主循环

python - 让线程等待定时器或信号?

sockets - 使用多个套接字,非阻塞或选择阻塞会更好吗?

Oracle批量作业,如何防止锁

SQL 查询 - 将 NULL 结果添加到 SELECT 查询