Einführung in die nicht-threaded-async-IO für C++?

Arbeite ich an einer desktop-app-team, bestehend aus "UI-Entwickler" (us) und "C++ Entwickler" (Sie). Die C++ - Entwickler sind dafür verantwortlich, uns alle Daten, die wir anzeigen in der Benutzeroberfläche, so dass Sie alle IO, Datenbank-Zugriff, web-Anrufe, etc..

Vor kurzem haben wir über einige ernsthafte performance-Probleme mit IO-blockiert den UI thread. Natürlich, die Lösung ist, um die asynchrone IO. Aber der C++ - Entwickler, die darauf bestehen das ist nur möglich, und erzeugt einen neuen thread, das ist, wie wir wissen, sehr teuer.

Weiß ich aus Node.js etc. das async-IO muss nicht threads beinhalten. Ich weiß, dass Win32, und vermutlich Macs, haben eine event-Schleife. Aber, ich habe keine Ahnung, was Lösungen sind weit verbreitet in C++ land tun async non-threaded IO. (Vielleicht libuv Sache zugrunde liegt, dass Knoten?).

Kann jeder Punkt, um einige populäre Bibliotheken, oder besser noch tutorial-Artikel, so können wir uns vorstellen, dieses Konzept zu unserem C++ - Entwickler? Bonus-Punkte für die cross-Plattform (PC und Mac). Mehr bonus-Punkte, wenn es eine async-nicht-Thread-Datenbank-Lösung, da ich glaube, dass unsere Verwendung von SQLite ist die Quelle für viele unserer Probleme.

  • "und erzeugt einen neuen thread, das ist, wie wir wissen, sehr teuer". Ich sehe diese Meinung eine ganze Menge. Und ich muss sagen, ich weiß es nicht "sehr teuer". Es ist sehr abhängig von Ihren speziellen Anwendungsfall, und die Fälle, in denen zusätzliche threads "sollte vermieden werden" ist viel kleiner als der Allgemeine Fall, sollten Sie umarmen.
  • Unsere app erfordert das Lesen der Eigenschaften von jeder Datei in einem Benutzer-ebook-Bibliothek, die in einigen Fällen kann nach oben von 1500-Dateien. 1500 threads ist nicht akzeptabel.
  • Allerdings konnte man das nicht in einem thread. 1500 Punkte ist ein unglaublich kleine Warteschlange.
  • Ja, ein hintergrund-thread und UI-thread ist durchaus akzeptabel. Aber die C++ devs sagen Sie uns, jede asynchrone operation erfordert einen eigenen thread. Ich weiß, dass ist nicht wahr, wenn Sie verwenden async non-threaded-IO in den hintergrund-thread, der ist, warum ich bin diese Frage zu stellen.
  • Auf welcher Plattform arbeitest du ?
  • PC und Mac
  • Ihre "C++ Entwickler" lügt Sie. :p ich kann nicht verallgemeinern und sagen, dass wirklich, aber ich sehe nicht ein, warum würden Sie benötigen ein thread pro IO. Klingt wie Sie ' ve entwickelt sich in eine Ecke.
  • Nicht konstruiert, C-plus-plused (denken Sie daran, wir reden hier von UI-Jungs vs C++ Jungs) 🙂

InformationsquelleAutor Domenic | 2011-12-15
Schreibe einen Kommentar