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
So Initialisierung inDLL_PROCESS_ATTACH: wird genug sein, um von mql-Programm aufrufen?
Von mql-Programm, um seine Funktionen in dll zu rufen.
Vom mql-Programm aus, um seine Funktionen in der dll aufzurufen.
Und was ist das Problem mit der Beschreibung ihrer Unterschriften? Sie ziehen winapi durch Methode Signaturen irgendwie, sind Sie nicht?
Verzeihung, warum beschreiben Sie sie? Und es tut mir leid, ich habe nichts gezogen))
Verzeihung, warum beschreiben Sie sie? Und es tut mir leid, ich habe nichts gezogen))
Liebe Forumsnutzer.
Andrey, ich denke, jeder weiß, dass Asynchronität und Multithreading zwei verschiedene Dinge sind.
Da die Funktion CreateThread() im WinAPI-Inluder beschrieben ist, wurde angenommen, dass Threads verwendet werden können.
Es gibt keine Funktionen, die CreateTask() ähneln und in der IDE beschrieben sind, so dass sich die Annahme einer möglichen asynchronen Codeerstellung von selbst erledigt.
Daher wurde der Schwerpunkt auf Fäden gelegt. Wie sich jedoch herausstellte, handelt es sich bei den beschriebenen Funktionen nur um WinAPI-Prototypen.
Ich wiederhole, die Aufgabe war es, reine WinAPI zu verwenden und der beschriebene Prototyp CreateThread() war irreführend. Es wird nirgends gesagt, dass es sich um Prototypen handelt.
Alle Aufgaben sind unterschiedlich, daher habe ich mich für die asynchrone Methode entschieden, und ich glaube, dass es besser ist, immer asynchron oder in Threads zu schreiben,
Und die Gewohnheit zu entwickeln, immer asynchron zu schreiben, wird es Ihnen ermöglichen, schnelle Programme zu schreiben, und Ihr Niveau als Spezialist zu erhöhen.
Es ist das Grundprinzip der Entwickler selbst, die Geschwindigkeit der Ausführung von mql Programmen, ist unser alles!
Es ist schade, dass mql eine solche Funktion nicht hat,
Ich schlage der mql-Administration vor, mql-Standardfunktionen für asynchrone Programmierung zu entwickeln,
denn es gibt Probleme mit Threads und vor allem mit der Sicherheit.
Für den asynchronen Modus gibt es meiner Meinung nach keine Sicherheitsprobleme.
Beispiel Logik
Erarbeiten Sie die Implementierung von EventLoop in mql.
die Klasse MqlTask erstellen
Deklarieren Sie die Aufgaben als MqlTask-Objekt obj;
Aufgabe erstellen Aufgabe = obj.CreateTask(MyFunc());
Erfolg ausführen = Aufgabe -> Ausführen();
pause execution success = task -> SleepMs(ms);
Warten auf Erfolg = Aufgabe -> Warten(ms);
auf unbestimmte Zeit warten Erfolg = Aufgabe -> Warten(0);
die Aufgabe entfernen, nachdem sie die Aufgabe delete ausgeführt hat;
und alle Arten von getStatuses, um sie zu kontrollieren.
Andrey, ich denke, jeder weiß, dass der asynchrone Modus und Multithreading unterschiedliche Dinge sind.
Das WinAPI-Inluder enthält die Funktion CreateThread(), und wir hatten angenommen, dass Threads verwendet werden können.
Da es in der IDE keine Funktionen gibt, die CreateTask() ähneln, sollten wir das mögliche asynchrone Schreiben von Code nicht berücksichtigen.
Daher wurde der Schwerpunkt auf Fäden gelegt. Wie sich jedoch herausstellte, handelt es sich bei den beschriebenen Funktionen nur um WinAPI-Prototypen.
Ich wiederhole, die Aufgabe war es, reine WinAPI zu verwenden und der beschriebene Prototyp CreateThread() war irreführend. Es wird nirgends gesagt, dass es sich um Prototypen handelt.
Alle Aufgaben sind unterschiedlich, daher bin ich zum asynchronen Modus übergegangen und glaube, dass es besser ist, immer asynchron oder in Threads zu schreiben,
Und die Angewohnheit, immer asynchron zu schreiben, wird es Ihnen ermöglichen, schnelle Programme zu schreiben und Ihr Niveau als Spezialist zu erhöhen.
Es ist das Grundprinzip der Entwickler selbst, die Geschwindigkeit der Ausführung von mql Programmen, ist unser alles!
Schade, dass es eine solche Funktion in mql nicht gibt, daher werde ich dem mql-Team vorschlagen, eine Standardfunktion für mql zu entwickeln
für asynchrone Programmierung, da es Probleme mit den Threads und vor allem mit der Sicherheit gibt.
Ich denke, dass es keine Sicherheitshindernisse für den asynchronen Modus gibt.
Ausarbeitung der Implementierung von Schleifen und Ausführung von Aufgaben in diesen Schleifen.
Entscheiden Sie sich, ob Sie Methoden asynchron oder multithreaded ausführen wollen. Ich zum Beispiel arbeite mit Sockets asynchron von mql aus.
Um zu bestimmen, was in mql verwendet werden kann und was verboten ist.
CreateThread() wurde in den Inludes gefunden, also dachte ich, es sei möglich, mit Threads zu arbeiten.
Aber wie sich herausstellte, sind Threads verboten, also fällt die Wahl auf async, aber wie man async in mql verwendet, ist auch nicht klar.
Ja, genau das ist das Problem mit den Steckdosen. In der Hilfe heißt es, dass nicht mehr als 128 Sockets erstellt werden können, was den Zugriff auf Informationen, z. B. über amerikanische Aktien, einschränkt.
Und selbst bei diesen 128 Sockeln ist nicht klar, wie man sie in den asynchronen Modus umwandeln und Verzögerungen bei der Verarbeitung eingehender Daten vermeiden kann.
Deshalb musste ich nach einer anderen Lösung für das Problem suchen,aber ich wollte es mit einer reinen WinAPI lösen, ohne eine selbst geschriebene DLL.
Und wie man asynchron in mql arbeiten ist es interessant, wenn Sie irgendwelche Arbeitsbeispiele haben, wäre es gut, sie zu diskutieren, wenn Sie die Informationen teilen können.
Aber die Standard asynchronen Methoden in mql Hilfe habe ich nicht gesehen.
Um zu bestimmen, was in mql verwendet werden kann und was verboten ist.
Ich fand CreateThread() in den Injektoren des Codes, also dachte ich, ich könnte mit Threads umgehen.
Aber wie sich herausstellte, sind Threads verboten, also fällt die Wahl auf async, aber wie man async in mql verwendet, ist auch nicht klar.
Ja, genau das ist das Problem mit den Steckdosen. In der Hilfe heißt es, dass nicht mehr als 128 Sockets erstellt werden können, was den Zugriff auf Informationen, z. B. über amerikanische Aktien, einschränkt.
Und selbst bei diesen 128 Sockeln ist nicht klar, wie man sie in den asynchronen Modus umwandeln und Verzögerungen bei der Verarbeitung eingehender Daten vermeiden kann.
Deshalb musste ich nach einer anderen Lösung für das Problem suchen,aber ich wollte es mit einer reinen WinAPI lösen, ohne eine selbst geschriebene DLL.
Und wie man asynchron in mql arbeiten ist es interessant, wenn Sie irgendwelche Arbeitsbeispiele haben, wäre es gut, sie zu diskutieren, wenn Sie die Informationen teilen können.
Aber die Standard asynchronen Methoden in mql Hilfe habe ich nicht gesehen.
Ich lese die klugen Teilnehmer und frage mich...
Was ist der Sinn dieser ganzen Spielereien?
Wann wird das Multithreading in MQL so dringend benötigt? Für mich wäre der einzige Nutzen das Testen von Strategien, das standardmäßig implementiert ist.
Im Idealfall könnte es sinnvoll sein, mehrere WebRequests auszuführen, aber ich glaube nicht, dass Multi-Threading überhaupt notwendig ist.
Welche Aufgaben erfordern überhaupt Multithreading?