簡體   English   中英

Haskell在kqueue上的並發性

[英]Haskell concurrency over kqueue

我寫了並發應用程序,並發現了錯誤:

buildFdSets:文件描述符超出范圍

我發現在一個進程中是操作系統對文件描述符數量的限制,在我的FreeBSD中它是1024 這是select()的限制。 我也了解到還有另一種方法: kqueue()

我的問題是:

  • 如何贏取文件描述符的限制?
  • 如何在haskell程序中使用kqueue()而不是select()

我相信GHC 7現在支持在它的后端使用kqueue():

鏈接到紙張描述性博客文章

然而,Haskell平台尚未用於GHC 7。

您可以簡單地升級到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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM