Frage

Ich schrieb gleichzeitige Anwendung und gefangen haben den Fehler:

  

buildFdSets: Dateideskriptors außerhalb des Bereichs

fand ich heraus, dass es die OS Begrenzung für die Anzahl von Datei-Deskriptoren in einem Prozess, in meinem FreeBSD es 1024 ist. Es ist die Grenze der select(). Ich habe auch gelernt, dass es einen anderen Ansatz: kqueue().

Meine Fragen sind:

  • Wie Grenze für Dateideskriptoren zu gewinnen?
  • Wie kqueue() zu verwenden, anstatt select() in Haskell-Programmen?
War es hilfreich?

Lösung

Ich glaube, dass GHC 7 hat jetzt Unterstützung für die Verwendung kqueue () in seinem hinteren Ende:

Link auf Papier , beschreibende Blog-Post

Doch die Haskell-Plattform ist noch nicht aus für GHC 7.

Andere Tipps

Sie können einfach zu GHC 7 aktualisieren, die Teil der die Haskell Platform , die enthält :

  

Auf POSIX-Plattformen gibt es einen neuen I / O-Manager basierend auf epoll / kqueue / Umfrage, die Multithreading-I / O-Code maßstab zu einer viel größeren Anzahl (100k +) von Threads

erlaubt

Im Einzelnen:

  

Architektonisch unser neuer I / O-Manager besteht aus zwei Komponenten. Unsere Veranstaltungs Noti fi cation-Bibliothek bietet eine saubere und tragbare API,   und abstrahiert die Systemebene Mechanismen verwendet effiziente bereitzustellen   Ereignis Noti fi kationen (kqueue, epoll und poll). Wir haben auch einen Shim, dass Geräte der halböffentliche threadWaitRead geschrieben und   threadWaitWrite Schnittstellen. Dies bedeutet, dass weder der Kern fi le   oder Vernetzung Bibliotheken, noch andere Low-Level-I / O-Bibliotheken erfordern   Änderungen an der Arbeit mit-und transparent pro fi tieren von den Leistungsverbesserungen der-neuen Code.

Das heißt, nur aktualisieren, und die Dinge funktionieren auf magische Weise besser.

Hier einiger Lesestoff:

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top