如何将启用epoll/kqueue的GHC/Haskell版本用于网络连接?

如何将启用epoll/kqueue的GHC/Haskell版本用于网络连接?,haskell,ghc,epoll,Haskell,Ghc,Epoll,网上有很多关于启用epoll/kqueue的GHC的旧信息。例如,上的代码不再编译 是否有人可以提供一个基本示例,说明如何在现代GHC版本中使用此功能进行构建,例如,在连接时只响应“Hello”的TCP服务器?GHC的IO管理器在引擎盖下使用epoll/kqueue,而无需任何特殊的程序员工作。只需编写一个简单的线程程序——将每个并发阻塞IO调用放在一个单独的线程中——GHC就会确保它按照您希望的方式运行。您能否描述一下“不再编译”的含义,并将您试图直接编译的代码包含在您的问题中?(作为证据,我

网上有很多关于启用epoll/kqueue的GHC的旧信息。例如,上的代码不再编译


是否有人可以提供一个基本示例,说明如何在现代GHC版本中使用此功能进行构建,例如,在连接时只响应“Hello”的TCP服务器?

GHC的IO管理器在引擎盖下使用epoll/kqueue,而无需任何特殊的程序员工作。只需编写一个简单的线程程序——将每个并发阻塞IO调用放在一个单独的线程中——GHC就会确保它按照您希望的方式运行。

您能否描述一下“不再编译”的含义,并将您试图直接编译的代码包含在您的问题中?(作为证据,我不仅仅是试图强制执行任意规则:我将标题为“基本并发服务器”的部分中的代码粘贴到了一个文件中,并且在我的机器上编译得很好。因此,关于您尝试执行的操作的进一步详细信息是非常必要的。)@DanielWagner Hi Daniel。当然如果您看最后一个示例,即实际使用
epoll
的示例,它使用了
循环
函数,但示例中甚至没有。我得到的错误
app3/Main.hs:14:5:不在范围内:“循环”
。那是在我将
System.Event
更改为
GHC.Event
后发生的,在任何地方都没有注明。wiki页面已过时。GHC的IO管理器在引擎盖下使用epoll/kqueue,无需任何特殊的程序员工作(和)。所以只需在页面顶部写下简单的线程版本。@DanielWagner我只是想说清楚。
forkIO
示例在每个线程中都有一个
accept
调用,是否已经在引擎盖下使用了epoll/kqueue?很酷。是的,每个线程中带有
body
调用的
forkIO
示例将使用epoll/kqueue。