haskell - 如何轮询文件、套接字或句柄以在 Haskell 中变得可读/可写?

标签 haskell

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

Haskell 中是否有类似 select/epoll/... 的东西?或者我被迫为每个文件/套接字生成一个线程并始终使用该线程内的阻塞资源?

最佳答案

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

关于haskell - 如何轮询文件、套接字或句柄以在 Haskell 中变得可读/可写?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11744527/

相关文章:

haskell - 为什么惰性评估有用?

haskell - 使用类型类为使用 Acid-State 时提供替代实现

haskell - 在 Haskell CIS194 第 2 周练习 2 中使用匿名函数

haskell - 傻瓜类型系列

json - 如何合并 Aeson 对象?

haskell 单子(monad) : IO [Double] to [IO Double]

haskell - 如何在没有 DataKinds 的情况下使值依赖于其他值?

haskell - 如何使用函数式响应式(Reactive)编程在每个时间步查询 URL?

loops - Haskell 迭代参数类型不匹配,为什么?

haskell - Functor's Product 和 Coproduct 的有用应用