Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Aber ich frage mich, ob es Aufgaben gibt, die wirklich Thread-Pooling erfordern? Nicht nur - einen Thread erstellen, ihn vergessen und warten, bis er abläuft, sondern genau einen Pool, wie Williams ihn beschreibt? Es scheint sich dabei um ein Beispiel für einen Geldautomaten zu handeln, wenn ich mich nicht irre - welche Aufgabe könnte ein solches Wunderwerk rechtfertigen? Ich kann mir eine solche Aufgabe noch nicht vorstellen. Und warum schaust du dir nicht ThreadPool an, wo alles schon gemacht ist, es gibt Dokumentation und Beispiele.
Um ehrlich zu sein, habe ich bisher nicht viel Sinn zwischenstd::async und thread pool gesehen, außer dassstd::async automatisch einen Thread für die aktuelle Aufgabe erstellt und löscht.
Und um das Thread-Pooling zu nutzen, müssen Sie die Anzahl der im Programm verwendeten Threads im Voraus kennen und diese Anzahl explizit für den Pool festlegen.
Es stellt sich heraus, dass die Thread-Pooling ist statisch in Bezug auf die Anzahl der Threads, obwohl dies möglicherweise nicht der Fall ist, kann ich nicht behaupten.
In Williams' Buch heißt es jedoch, dass Thread-Pooling empfohlen wird, wenn sehr viele Aufgaben in std::thread ausgeführt werden sollen.
Und vielleicht gilt das nicht fürstd::async, ich habe die Bedeutung noch nicht ganz begriffen.
Und Asynchronität ist bei Netzwerklösungen und Multisymbol-Strategien sehr gefragt, und auch für belastete Berechnungen ist sie nützlich.
Aber mitstd::async und std::promise im Standard, denke ich, dass es keine Notwendigkeit gibt, einen Thread-Pool zu erstellen.
Es gibt auch eine Frage zum Einrichten eines Projekts für dll.
Wie wird man unbenutzte Funktionen los, die von Compilern automatisch in die DLL-Abhängigkeit gezogen werden?
Ich habe bereits verschiedene Entwicklungsumgebungen ausprobiert, und jede von ihnen zieht ihre eigene ungenutzte Funktion.
MSVS_2017 zieht sogar seine eigenen Runtime-Abhängigkeiten, die ich wohl nicht loswerden kann.
Deshalb habe ich verschiedene IDEs ausprobiert, aber auch diese ziehen ungenutzte Funktionen.
Wie wird man sie wieder los?
Um ehrlich zu sein, habe ich selbst nicht viel Sinn zwischenstd::async und Thread Pooling entdeckt, außer dass std::async automatisch einen Thread für die aktuelle Aufgabe erstellt und löscht.
Und um das Thread-Pooling zu nutzen, müssen Sie die Anzahl der im Programm verwendeten Threads im Voraus kennen und diese Anzahl explizit für den Pool festlegen.
Es stellt sich heraus, dass die Thread-Pooling ist statisch in Bezug auf die Anzahl der Threads, obwohl dies möglicherweise nicht der Fall ist, kann ich nicht behaupten.
In Williams' Buch heißt es jedoch, dass Thread-Pooling empfohlen wird, wenn viele Aufgaben in std::thread ausgeführt werden sollen.
Und vielleicht gilt das nicht fürstd::async, ich habe die Bedeutung noch nicht ganz begriffen.
Und Asynchronität ist bei Netzwerklösungen und Multisymbol-Strategien sehr gefragt, und auch für belastete Berechnungen ist sie nützlich.
Aber mitstd::async und std::promise im Standard, denke ich, dass es keine Notwendigkeit gibt, einen Thread-Pool zu erstellen.
Also der wichtigste Punkt der async ist Thread-Pool zu verwenden, loszuwerden, Thread Erstellung/Löschung Overhead, wenn async nicht tun, dass, dann ist es wertlos.
Nun, eigentlich habe ich anscheinend zu schlecht über async gedacht. Ein einfacher Test zeigt, dass dies durchaus angemessen ist:
Sie können sehen, dass async für den zweiten Stapel von Aufträgen bereits erstellte Threads verwendet und keine neuen erstellt hat. Ich habe es also nicht zu Unrecht verwässert, denke ich.
Es gibt auch eine Frage zum Einrichten eines Projekts für dll.
Wie kann ich ungenutzte Funktionen loswerden, die von den Compilern automatisch in die DLL-Abhängigkeit gezogen werden?
Bei mingw sollte die Option -static helfen , denn mit static wird kein Bild mehr erzeugt.
Härterer asynchroner Test
Nun, ja, es funktioniert gut. Warum habe ich so schlecht von ihr gedacht? Wahrscheinlich eine krumme Implementierung zu Beginn von C++11 ...
SZY: aber ich sollte anmerken, dass das abnormal langsame async() mit lanch::async policy, wenn Sie es durch lanch::deferred ersetzen (+ warten auf die Beendigung des Jobs am Ende des ersten Zyklus), dann beginnt dieser einfache Test 30 mal schneller zu arbeiten !!! So viel zum Thema Multithreading )). Damit bleibt Platz für einen selbstgebauten Fadenpool, der meines Erachtens viel schneller als der Standardpool hergestellt werden kann.
Es gibt auch eine Frage zum Einrichten eines Projekts für dll.
Wie wird man unbenutzte Funktionen los, die von Compilern automatisch in die DLL-Abhängigkeit gezogen werden?
Ich habe bereits verschiedene IDEs ausprobiert, und jede von ihnen zieht ihre eigene ungenutzte Funktion.
MSVS_2017 zieht sogar seine eigenen Zeitabhängigkeiten, die ich wohl nicht loswerde.
Härterer asynchroner Test
Nun, ja, es funktioniert gut. Warum habe ich so schlecht von ihr gedacht? Wahrscheinlich eine krumme Implementierung zu Beginn von C++11 ...
SZY: aber ich sollte anmerken, dass das abnormal langsame async() mit lanch::async policy, wenn Sie es durch lanch::deferred ersetzen (+ warten auf die Beendigung des Jobs am Ende des ersten Zyklus), dann beginnt dieser einfache Test 30 mal schneller zu arbeiten !!! So viel zum Thema Multithreading )). Damit bleibt Platz für einen selbstgebauten Fadenpool, der meines Erachtens viel schneller als der Standardpool hergestellt werden kann.
Ich habe nicht bis zum Ende gelesen und beschlossen, Ihnen vorzuschlagen, mit der aufgeschobenen Flagge zu laufen ))))) Wenn ein solcher Test schneller abläuft, halte ich diese Art der Nutzung im Allgemeinen für vorteilhafter, warum also starre Grenzen setzen? Ich wollte mich nur für den Link zu Git bedanken, habe ihn mit Interesse verfolgt )) Mir hat gefallen, dass es zwei Versionen gibt - mit und ohne Boost.
Eine weitere Frage bezog sich auf die Einrichtung des Projekts für die dll.
Wie kann ich ungenutzte Funktionen loswerden, die von Compilern automatisch in die DLL-Abhängigkeit gezogen werden?
Ich habe bereits verschiedene Entwicklungsumgebungen ausprobiert, und jede von ihnen zieht ihre eigene ungenutzte Funktion.
MSVS_2017 zieht sogar seine eigenen Zeitabhängigkeiten, die ich wohl nicht loswerde.
Deshalb habe ich verschiedene IDEs ausprobiert, aber auch diese ziehen ungenutzte Funktionen.
Wie wird man sie wieder los?
Ich habe nicht bis zum Ende gelesen und beschlossen, Ihnen vorzuschlagen, dass Sie mit der aufgeschobenen Flagge )))) laufen.
Warum brauchen wir async() mit dem Flag deferred? Ich verstehe das wirklich nicht, können Sie das erklären?
Warum brauchen wir async() mit dem Flag deferred? Ich verstehe das wirklich nicht, können Sie das erklären?
Warum lesen Sie nicht in der Dokumentation über die Flagge? Unter https://en.cppreference.com. Und Beispiele mit Diskussion auf stackoverflow.com. Ich nutze diese Informationsquellen in der Regel, und ich rate Ihnen, dies auch zu tun.
Warum nicht in der Dokumentation über die Flagge lesen? Unter https://en.cppreference.com. Und Beispiele mit Diskussion auf stackoverflow.com. Ich nutze diese Informationsquellen in der Regel, und ich rate Ihnen, dies auch zu tun.