Asynchrone und mehrfädige Programmierung in MQL - Seite 33

 
Roman:

Ich mag alles )) verschiedene Ansätze zu verstehen und dann denjenigen zu wählen, der für mich mehr Sinn macht und den Anforderungen entspricht, das ist einfach.

Die ganze Welt arbeitet mit DLL, mit den Wundern von ICL nur eine Gruppe von Sektierern, die meinen, es sei die höchste Kompetenz.
 
Yuriy Asaulenko:
Die ganze Welt arbeitet mit DLL, mit den Wundern von ICL nur eine Gruppe von Sektierern, die meinen, es sei die höchste Kompetenz.

Das ist urkomisch, und ich könnte nicht mehr zustimmen ))))
Sie sollten die Handbücher lesen und über die angebotenen Optionen nachdenken.
Vielen Dank an alle, die wirklich nicht flub, schlug verschiedene Lösungen.
Jetzt gibt es eine große Auswahl.

 
Das erinnert mich übrigens an einen alten Witz.
Internationaler medizinischer Kongress. Bericht der russischen Delegation - "Entfernung von Mandeln durch den Anus".
Wir haben es gelesen. Im Anschluss daran werden Fragen aus dem Publikum gestellt.
- Wir bewundern die Fähigkeiten und Leistungen der russischen Chirurgie. Aber warum durch den Hintereingang?
- So machen wir es alle.
 
Vict:

Ich verstehe richtig, dass Futures und Async nur für C++ Standard sind?
Gibt es nicht eine ähnliche Bibliothek in C?

 
Roman:

Ich verstehe richtig, dass Futures und Async nur für C++ Standard sind?
Gibt es nicht eine ähnliche Bibliothek in C?

Richtig. Cish std hat auch Multi-Threading-Unterstützung https://en.cppreference.com/w/c/thread

ZS: Sie könnten auch das Buch "c++ concurrency in action" von anthony williams lesen. In Kapitel 9 schreibt er zum Beispiel Thread Pool.

Thread support library - cppreference.com
  • en.cppreference.com
If the macro constant is defined by the compiler, the header and all of the names listed here are not provided. Function names, type names, and enumeration constants that begin with either , , , or , and a...
 
Vict:

Richtig. Cish std hat auch Multi-Threading-Unterstützung https://en.cppreference.com/w/c/thread

HH: Sie könnten auch das Buch "c++ concurrency in action" von anthony williams lesen. In Kapitel 9 schreibt er zum Beispiel Thread Pool.

Ich habe den "Siehe auch"-Link am Ende der Seite nicht bemerkt ))
Ich habe es verstanden,std::thread ist in C, aberstd::async ist es nicht ((

Ich lese dieses Buch gerade jetzt )) Parallele C++-Programmierung in Aktion, Anthony Williams.
Das Buch befindet sich im Anhang,
async beginnt in Kapitel 4, ziemlich leicht zu lesen.
Und Kurt Ganteroth behauptetin seinem Buch Optimizing C++ Programs, dass es 14 Mal teurer ist, Threads zu erstellen als std::async zu verwenden.
Deshalb wollte ich ursprünglich async verwenden, aber ich wusste auch nicht viel über Threads in C/C++,
WennThreadsalsoteurer sind, fallen sie für die Verwendung ohnehin weg.
Es stellt sich jedoch heraus, dass es in Cstd::async nicht gibt((


 
Roman:

Ich habe den "Siehe auch"-Link am Ende der Seite nicht bemerkt ))
Ich habe es verstanden,std::thread ist in C, aber std:: async ist es nicht ((

Ich lese dieses Buch gerade jetzt )) Parallele C++-Programmierung in Aktion, von Anthony Williams.
Wenn Sie daran interessiert sind, finden Sie das Buch im Anhang, async beginnt in Kapitel 4, ziemlich einfach zu lesen.
Und Kurt Ganteroth stelltin seinem Buch Optimizing C++ Programs fest, dass es 14 Mal teurer ist, Threads zu erstellen als std::async zu verwenden.
Deshalb wollte ich ursprünglich async verwenden, aber ich wusste auch nicht viel über Threads in C/C++,
Wenn dieFädenalsoteurer sind, lohnt es sich ohnehin nicht, sie zu verwenden.
Es stellt sich jedoch heraus, dass es in C
std:: async nicht gibt ((

Ein Gewinde ist nicht teurer, es ist nur ein untergeordnetes Werkzeug, aus dem man alles machen kann. Sie können Ihre eigenen einfachen Thread-Pool auf "teure Threads" - eine Stunde des Schreibens (oder nehmen Sie eine vorgefertigte lib).

Die Erstellung von Threads ist 14 Mal teurer als die Verwendung von std::async.

Vielleicht, wenn es einen Thread-Pool innerhalb von async gibt, aber das ist nicht immer der Fall https://stackoverflow.com/questions/15666443/which-stdasync-implementations-use-thread-pools.

Infolgedessen ist async eine schwarze, unkontrollierbare Box. Ich dränge Sie nicht dazu, Ihren eigenen Pool zu schreiben, wenn Sie sich mit async wohl fühlen, gut.

ZS: Es gab Gerüchte, dass async aus c++17 entfernt werden sollte.
Which std::async implementations use thread pools?
Which std::async implementations use thread pools?
  • 2013.03.27
  • KnowItAllWannabeKnowItAllWannabe 5,31455 gold badges3434 silver badges7676 bronze badges
  • stackoverflow.com
One of the advantages of using instead of manually creating objects is supposed to be that can use thread pools under the covers to avoid oversubscription problems. But which...
 

Async kann synchron ausgeführt werden, es gibt ein entsprechendes Flag. Ich denke, dass Thread-Pooling bei Plus kompliziert ist und nur im äußersten Notfall sinnvoll ist. Schauen Sie sich lieber Sharp und das Thread-Pooling an.

Ich würde auch "Scott Meyers: Efficient and Modern C++" empfehlen. 2016, leicht zu lesen, wie ein Blockbuster. Ich habe das Archiv unten angehängt. Er hat ein interessantes Kapitel über Fäden. Und im Allgemeinen sollte man Meyers lesen, weil man es muss )))

 
Andrei Novichkov:

Ich denke, dass Thread-Pooling bei den Profis schwierig ist und nur Sinn macht, wenn es absolut notwendig ist.

Machen Sie es nicht schwerer, als es sein muss. Wenn Sie ihn nicht selbst schreiben wollen, können Sie einfach einen vorgefertigten nehmen, eine kurze Suche hier https://github.com/vit-vit/ctpl. Und es ist etwas weniger vorhersehbar, im Gegensatz zu async (was oft kritisiert wird).

vit-vit/CTPL
vit-vit/CTPL
  • vit-vit
  • github.com
More specifically, there are some threads dedicated to the pool and a container of jobs. The jobs come to the pool dynamically. A job is fetched and deleted from the container when there is an idle thread. The job is then run on that thread. A thread pool is helpful when you want to minimize time of loading and destroying threads and when you...
 
Vict:

Machen Sie es nicht schwerer, als es sein muss. Wenn Sie es nicht selbst schreiben wollen, können Sie ganz einfach ein vorgefertigtes Exemplar bekommen, hier ist eine schnelle Suche https://github.com/vit-vit/ctpl. Und es ist etwas weniger vorhersehbar, im Gegensatz zu async (was oft kritisiert wird).

Nein, ich habe keine Lust )))))) Aber auch eine flüchtige Suche ist, ähm, heikel. Ich bin auf github auf eine Menge Schrott gestoßen. Aber ich bin in einem anderen interessiert, gibt es irgendwelche Aufgaben, die wirklich Thread-Pooling erfordern würde? Nicht einfach einen Thread erstellen, ihn vergessen und warten, bis er beendet ist, sondern ihn einfach zusammenfassen, wie Williams es 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.