Mit Boost.Faser hat c++ einen Schritt näher zu kommen Erlang-Stil-Prozesses/threads?
Lese ich http://olk.github.io/libs/fiber/doc/html/ Es scheint mir, dass mit Boost.Faser C++ näher kommen, Erlang Fähigkeit haben, um Tausende von "Verfahren", auch bekannt als "grüne Prozesse[threads]" http://en.wikipedia.org/wiki/Green_threads.
Meine Frage ist, gibt Auftrieb.Faser bereit für die Produktion, gibt es jetzt c++ - alternativen, die eine bessere Dokumentation und Beispiele? Jemand erwähnte leichte Fäden, aber ich kann nicht scheinen zu finden, ein Verweis darauf. Eine abschließende Frage ist, warum nicht die C++ - standard enthalten Fasern?
Der Grund, warum ich bin daran interessiert, das ist, weil ich realtime-updates, wo Sie einen Wert ändern, können die Auswirkungen (spawn) Hunderte/thousans von kleinen, aber peinlich parallele Berechnungen. Die C++ - thread-Modell funktioniert nicht sehr gut, imo. Bitte keine GPU, da es derzeit zu lange dauert, um die Informationen zu übertragen zu und von der GPU.
Merke ich, dass Erlang ist weit mehr als das, also bitte nicht klärt mich auf Erlang vs C++ im Allgemeinen Fall.
- Wirklich, das ist ein problem mit scheduling und Kontextwechsel: linuxplumbersconf.org/2013/ocw//system/presentations/1653/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Steigern.Faser wurde überprüft, indem die Boost-community im Januar 2014 gefunden wurde, müssen erhebliche zusätzliche Arbeit. Die Ergebnisse der community-Bewertung bei http://lists.boost.org/boost-announce/2014/01/0393.php.
C++ 17 sieht auch zu gewinnen WinRT wie M:N-threading-Modell basiert auf fortsetzbare Funktionen, die mit dem vorgeschlagenen await-Schlüsselwort. Microsoft implementiert haben, Unterstützung in Ihrem compiler, und, abgesehen von den magic memory allocation tricks für futures sieht es vielversprechend aus. Die relevanten N Papier ist N4134 (http://www.open-std.org/Jtc1/sc22/wg21/docs/papers/2014/n4134.pdf), und wie Sie sehen werden, dass, wenn angenommen, diese Formulierung fortsetzbare Funktionen wäre in der Tat Erlang-Typ Skalierbarkeit, auch wenn die syntax ein bisschen stumpf (hey, es ist C++, Wann ist die syntax immer einfach!).
Natürlich, wenn Sie benötigen eine tragbare Lösung jetzt, entweder gehen die stackless coroutine route mit ASIO (Vorsicht: es ist spröde), oder fein Korn ASIO-Handler mit ASIO-Stränge mit Hilfe einer Instanz der Klasse als Ihre Ausführung Zustand, der in viel die gleiche Sache, oder sonst die Nutzung zu Steigern.Ballaststoffe sowieso. Wenn Sie nur Windows, würde ich die Presse mit Microsofts proprietäre Erweiterungen selbst, sind Sie sehr anders als Sie zu verlassen, es sei denn, Sie verlassen WinRT 🙂
Edit: Der Autor von Boost.Faser erzählt mir, dass ab Januar 2015 die empfohlenen änderungen aus der community abgeben sind abgeschlossen, und abgesehen von Verbesserungen an der Dokumentation, Faser betrachtet, ist bereit für die Aufnahme in die offizielle Steigern. Wenn dies tatsächlich der Fall ist, dann Fiber ist wahrscheinlich die beste Lösung vor dem offiziellen C++ - 17 Sprache Unterstützung für die endgültige fortsetzbare Funktionen wird im Compiler.