如何在Haskell中轮询文件,套接字或句柄以使其可读/可写?

Ric*_*rdo 8 haskell

我怎么能从Haskell看几个文件/套接字并等待它们变得可读/可写?

在Haskell中有没有像select/epoll/...这样的东西?或者我被迫为每个文件/套接字生成一个线程并始终使用该线程中的阻塞资源?

Dan*_*ner 14

问题是错误的:你没有被迫为每个文件/套接字生成一个线程并使用阻塞调用,你可以为每个文件/套接字生成一个线程并使用阻塞调用.这是最干净的解决方案(任何语言); 在其他语言中避免它的唯一原因是那里的效率有点低.然而,GHC的线程足够便宜,它在Haskell中效率不高.(此外,在幕后,GHC的IO管理器使用类似epoll的方式来唤醒线程.)