![](/img/trans.png)
[英]How to use the epoll/kqueue enabled version of GHC/Haskell for network connections?
[英]Haskell concurrency over kqueue
我寫了並發應用程序,並發現了錯誤:
buildFdSets:文件描述符超出范圍
我發現在一個進程中是操作系統對文件描述符數量的限制,在我的FreeBSD中它是1024
。 這是select()
的限制。 我也了解到還有另一種方法: kqueue()
。
我的問題是:
kqueue()
而不是select()
? 您可以簡單地升級到GHC 7,它是Haskell平台的一部分,其中包括 :
在POSIX平台上,有一個基於epoll / kqueue / poll的新I / O管理器,它允許多線程I / O代碼擴展到更大數量(100k +)的線程
特別是:
在架構上,我們的新I / O管理器由兩個組件組成。 我們的事件通知庫提供了一個干凈且可移植的API,並抽象了用於提供有效事件通知(kqueue,epoll和poll)的系統級機制。 我們還編寫了一個實現半公共threadWaitRead和threadWaitWrite接口的墊片。 這意味着核心文件或網絡庫以及其他低級I / O庫都不需要進行任何更改,以便從我們的新代碼的性能改進中獲益並且透明地受益。
也就是說,只需升級,事情就會變得更好。
這是一些閱讀材料:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.