Asynchrone und mehrfädige Programmierung in MQL - Seite 13

 
Реter Konow:

Wenn sie Multithreading hinzufügen, werden Sie sich dann schlechter fühlen? Sie haben also eine Menge Dinge zu MQL hinzugefügt, und es ist eine wirklich nützliche Sache. Aber seine Nützlichkeit kann nur derjenige verstehen, der sehr komplexe, umständliche Programme in MQL schreibt. Wenn Sie nicht verstehen, warum wir Multithreading brauchen, bedeutet das, dass Sie solche Programme nicht schreiben. Wenn Sie das tun, werden Sie verstehen. Es ist ganz einfach. ))

Multithreading ist auf jeden Fall erforderlich, insbesondere im Tester, vor allem im Multi-Instrumenten-Modus. Mir fehlt es oft an Leistung. Aber ich bin kein Experte im Programmieren und verstehe die Feinheiten nicht sehr gut, ich weiß nur, dass ich viele Dinge parallel zählen muss). Und eine Parallelschaltung des Prüfgeräts wäre äußerst nützlich.
 
Реter Konow:

Wenn sie Multithreading hinzufügen, werden Sie dann schlechter abschneiden?

auf keinen Fall - es wird besser sein, ! - ABER die Schlüsselfrage ist hier die Unterstützung - wer wird erklären, wie man es benutzt? - Wer wird Fehler beheben? - Wer garantiert eine verständliche Funktionalität?

Entsprechend der Grundidee von Entwicklern, wie und von wem MT verwendet werden soll, bieten sie eine Funktionalität, die der von C++ entspricht, wodurch die "Kopfschmerzen" der Schulung und der Erklärung der Funktionsweise wegfallen - die Literatur über C++ und die Beispielefür das Schreiben von Einsteigerprogrammen im Internet haben in den letzten 20 Jahren eine Menge gesammelt

Haben Sie ein fertiges Paket gesehen (entsprechend dem Problem von TC), das auf C++ angewendet werden kann?

 
Igor Makanu:

"Experten"? - Sie haben nichts zu sagen, schieben Sie Ihre imho... Sie haben eine große MQL-Gemeinschaft auf dieser Website mit Fachleuten in verschiedenen Bereichen, leider haben Sie nicht gezeigt, jede Ihrer Kenntnisse, die nützlich für die Gemeinschaft wäre, können Sie mir die Schuld wieder für alles, was Sie wollen - "Sie sind der Experte! "


Was werden die Entwickler tun? - Sie können nicht einmal erklären, WARUM das notwendig ist, oder? )))

was ist der Zweck von MetaQoutes? - das Ziel, wie jedes IT-Unternehmen, Gewinn zu machen! Ich weiß nicht warum, MetaQoutes nimmt die Förderung seiner Dienstleistungen sehr ernst, es wird viel Arbeit geleistet, um den algorithmischen Handel zu popularisieren, Analysematerial bereitzustellen, eine Online-Community zu schaffen... Diese Art von Wohltätigkeit wird nur von wenigen IT-Unternehmen geleistet, in der Regel von den IT-Giganten.

Das Unternehmen gibt also seine Ressourcen für etwas aus, das in der Zukunft (ich bin mir nicht sicher) einen Gewinn bringen wird.... und dann, siehe da... ein Benutzer auftaucht, der das Konzept von zurückgebliebenem Python oder Java an MQl.... anpassen muss Findest du das nicht lustig? - Wie alt sind Sie? ))))


Ich respektiere, dass Beharrlichkeit oft der einzige Weg ist, um seine Nische im Leben zu finden! Viel Glück bei dieser harten Arbeit!

Es gibt nichts, worüber man mit Ihnen über dieses Thema sprechen könnte!
Sie haben nicht einmal genug Logik, um zu verstehen, welchen effektiven Nutzen MetaQuotes aus der Möglichkeit, asynchrone Programme zu schreiben, ziehen wird.
Und es wird wirklich Spezialisten anziehen, die asynchrone Programme schreiben.
Und es gibt genügend adäquate Fachleute in der Gemeinde, mit denen man Probleme und Ideen besprechen kann und die nicht auf Ihr "Ich bin ein Spezialist" hören.
Um ein Experte zu sein, muss man mit der Technologie Schritt halten, unabhängig davon, in welcher Sprache sie verwendet wird.
Sie hören nicht einmal, was man Ihnen sagt, dass C++ auch asynchron geschrieben ist, aber Sie verstehen es wahrscheinlich nicht, Sie haben sich keine asynchronen Aufgaben gestellt.
Und mäßigen wir Ihren Eifer, Sie können nicht einmal normal kommunizieren.

 
Roman:

Sie sind derjenige, der bei diesem Thema nichts zu sagen hat!

nicht sprechen, aber es gibt immer noch keine Antwort:


die Frage beantworten, wozu das Handelsterminal benötigt wird?
 
Maxim Romanov:
Multithreading ist definitiv erforderlich, vor allem im Tester, insbesondere im Multi-Instrumenten-Modus. Mir fehlt es oft an Leistung. Aber ich bin kein Experte im Programmieren und verstehe die Feinheiten nicht sehr gut, ich weiß nur, dass ich viele Dinge parallel zählen muss.) Und eine Parallelschaltung des Prüfgeräts wäre äußerst nützlich.
Und ich werde eine dreidimensionale Visualisierung entwickeln, und es ist nicht sinnvoll, sie in einen Thread mit Berechnungen, Schnittstellenereignissen und externen Ereignissen (Serveraufrufe) zu packen. Die DLL ist nicht geeignet immer aus einem Grund: Sie können Programme nicht frei verteilen.
 
Igor Makanu:

auf keinen Fall - es wird besser sein, ! - ABER die Schlüsselfrage ist hier die Unterstützung - wer wird erklären, wie man es benutzt? - Wer wird Fehler beheben? - Wer stellt sicher, dass die Verständlichkeit der Funktionalität gewährleistet ist?

...

Aus meiner Sicht ist dies das geringste Problem. Das Wichtigste ist, dass die Menschen über dieses Thema kommunizieren. Das Forum braucht neue Themen. Nicht wahr? Es wird nur noch besser werden. Was ist kritisch, wenn es bei den Nutzern zu Problemen und Fehlern kommt? Und wenn es gar keine gab? )

 
Andrey Pogoreltsev:

Sie fordern eine asynchrone Abfrageausführung, führen aber Multithreading als Beispiel an... Ich habe dich gedrängt, es herauszufinden, aber du hast es nie getan.

Ich habe Ihnen hier eine Lösung für genau Ihr Problem gegeben: https://www.mql5.com/ru/forum/318593/page4#comment_12568119

Aber ich bin mir sicher, dass Sie sich nicht einmal mit dem Thema beschäftigt haben.

Scheint mir, wenn Sie Ihnen eine asynchrone Warteschlange geben, werden Sie immer noch für Multithreading fragen... Versuchen Sie wenigstens, mit OVERLAPPED und Ereignissen umzugehen (fragen Sie nicht WinAPI in Ihrem Code).

Wenn Sie Multithreading in das Terminal einführen, wird es sich schneller als die Lichtgeschwindigkeit unter den bedauernswerten Programmierern vergraben.

Programmierer suchen nach Lösungen für Probleme und verlangen nicht, dass der Rahmen geändert wird, um ihrer Unwissenheit zu entsprechen.

Nein, Sie irren sich, ich habe mir alles angesehen und werde es mir auf jeden Fall ansehen.
Übrigens, du bist der einzige, der wenigstens eine gute Richtung gegeben hat, danke, vom Rest nur Flub.
Es gibt einfach eine Menge Leute, die das Wesentliche des Themas nicht verstehen, deshalb musste ich ihre Fragen beantworten. Deshalb musste ich ihre Fragen beantworten, und deshalb wurde das Thema größer.
Es gibt verschiedene Technologien für Multithreading oder asynchrone Verbindungen, weshalb viele von ihnen dies nicht verstehen.
Und ich musste eilig Beispiele aus dem Internet anführen, aber selbst die erklären zumindest irgendwie das Wesen der Technologie.
Niemand hat sich die Mühe gemacht, andere Technologien zu zeigen und zu erklären, wie sie funktionieren, ein Refrain.

 
Roman:

Nein, nein, Sie irren sich, ich habe alles durchgesehen, ich werde es eindeutig prüfen.
Übrigens sind Sie der Einzige, der wenigstens eine richtige Richtung angegeben hat, danke, die anderen flunkern nur.
Es gibt einfach viele Leute, die das Wesentliche des Themas nicht verstehen, deshalb musste ich ihre Fragen beantworten. Deshalb musste ich ihre Fragen beantworten, und deshalb wurde das Thema größer.
Und über Multithreading oder asynchrone Verbindungen gibt es einige Technologien, die viele nicht verstehen.
Und ich musste eilig Beispiele aus dem Internet anführen, aber selbst die erklären zumindest irgendwie das Wesen der Technologie.
Niemand hat sich die Mühe gemacht, andere Technologien zu zeigen und zu erklären, wie sie funktionieren, ein Refrain.

Multithreading - Aufgaben werden in mehreren Threads ausgeführt. Kann auf einem einzigen Prozessor ausgeführt werden, wobei das Multithreading erhalten bleibt und zwischen den Prozessoren umgeschaltet wird, wenn die Prozessorzeitkontingente erschöpft sind. Erfordert Synchronisierung für den Zugriff auf gemeinsame Ressourcen. Kann zu Deadlocks, Race Conditions,Speicherfreigabefehlern und anderen "Überraschungen" führen.

Asynchron - nicht blockierte Funktionsausführung (d.h. die Kontrolle wird unmittelbar nach Beendigung der Methode zurückgegeben), in der Regel auf anderen Geräten (Netzwerkgeräten, Speichergeräten, Peripheriegeräten usw.). So ist es z.B. möglich, einen leistungsstarken Mehrbenutzerserver zu schreiben, der nur einen Thread und Client-Verbindungen für die Endgeräteverarbeitung verwendet. Es hängt alles vom Zweck des Servers ab.

In Ihrem Fall müssen Sie eine große Anzahl von Verbindungen mit WinAPI erstellen, und Sie können den Status dieser Verbindungen durch WaitForMultipleObjects mit einem Timeout überprüfen, so dass Sie z. B. keinen Timer-Thread behalten.

PS: Theoretisch könnte auch IOCompletionPort verwendet werden, aber das erfordert mehr Wissen und sorgfältige Planung.
 
Andrey Pogoreltsev:

Multithreading - Aufgaben werden in mehreren Threads ausgeführt. Kann auf einem einzigen Prozessor ausgeführt werden, wobei das Multithreading erhalten bleibt und zwischen den Prozessoren umgeschaltet wird, wenn die Prozessorzeitkontingente erschöpft sind. Erfordert Synchronisierung für den Zugriff auf gemeinsame Ressourcen. Kann zu Deadlock, Race Condition, Speicherfreigabefehlern und anderen "Überraschungen" führen.

Ist es wirklich so gefährlich? Fehler bei der Speicherfreigabe... Die Expert Advisors laufen jedoch auf verschiedenen Charts in verschiedenen Threads und es gibt keine unerwarteten Ausfälle. Aufgaben, die zwischen EAs verteilt sind, verursachen also keine kritischen Fehler, aber Aufgaben, die zwischen Threads innerhalb eines EAs verteilt sind, schon? Natürlich bin ich kein Experte auf diesem Gebiet, aber wo liegt das Problem, wenn man die Methode der Aufgabenverteilung zwischen EAs in einen einzigen EA verlagert? Vielleicht gibt es ein Problem, das bestreite ich nicht.

 
Andrey Pogoreltsev:

Multithreading - Aufgaben werden in mehreren Threads ausgeführt. Kann auf einem einzigen Prozessor ausgeführt werden, wobei das Multithreading erhalten bleibt und zwischen den Prozessoren umgeschaltet wird, wenn die Prozessorzeitkontingente erschöpft sind. Erfordert Synchronisierung für den Zugriff auf gemeinsame Ressourcen. Kann zu Deadlocks, Race Conditions, Speicherfreigabefehlern und anderen "Überraschungen" führen.

Asynchron - nicht blockierte Funktionsausführung (d.h. die Kontrolle wird unmittelbar nach Beendigung der Methode zurückgegeben), in der Regel auf anderen Geräten (Netzwerkgeräten, Speichergeräten, Peripheriegeräten usw.). So ist es z.B. möglich, einen leistungsstarken Mehrbenutzerserver zu schreiben, der nur einen Thread und Client-Verbindungen für die Endgeräteverarbeitung verwendet. Es hängt alles vom Zweck des Servers ab.

In Ihrem Fall müssen Sie eine große Anzahl von Verbindungen mit WinAPI erstellen und Sie können den Status dieser Verbindungen mit WaitForMultipleObjects mit einem Timeout überprüfen, so dass Sie nicht einen Timer-Thread, zum Beispiel halten müssen.

PS: Theoretisch könnte man auch IOCompletionPort verwenden, aber das erfordert mehr Wissen und einen klaren Entwurf.

Nun, das ist ein Gespräch, ich habe nicht geblockte Ausführung mit Asyncio getan, aber wenn Sie das Wort Coroutine oder Calback hier schreiben, gibt es eine Menge Verwirrung und ich würde lieber nicht sagen, etwas ))
Ich kenne das Prinzip der nicht-blockierenden Aufrufe selbst, aber nur in Python und einer weiteren C- und C++-Bibliothek.
Ich habe noch nie mit WinAPI gearbeitet, ich werde es studieren, ich war an anderen Bibliotheken suchen, aber es macht keinen Unterschied, die Hauptsache ist, Syntax zu verstehen, und ich verstehe, was ist was dort )))
Aber während des Gesprächs schlug ich vor, diese Funktionalität zu regulärem mql hinzuzufügen, um das Schreiben von asynchronem Code von Anfang an zu ermöglichen.
Und wir begannen, verwirrt zu werden, weil wir nicht verstanden, wofür und warum. Weil es so ist ))

Grund der Beschwerde: