[ARCHIV]Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht daran vorbei. Ohne dich kann ich nirgendwo hingehen - 5. - Seite 383
![MQL5 - Sprache von Handelsstrategien, eingebaut ins Kundenterminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
1. Nicht aus der Vermutung, sondern aus den Ergebnissen des Experiments, die übrigens durch Ihr Experiment auf S. 378 bestätigt werden.
2. Der Code auf Seite 378 bietet nur atomaren Zugriff. Die Aufgaben stehen nicht in der Warteschlange für die Ausführung. Es kann vorkommen, dass eine der Aufgaben für eine sehr lange Zeit nicht ausgeführt wird.
Die Warteschlange wird vom System erstellt. Ihre Bestellung ist nicht garantiert. Es kann lange dauern, bis sie ausgeführt wird. Gibt es einen anderen Weg in diesem fehlerhaften Algorithmus, der eine besondere Reihenfolge des Zugriffs auf eine gemeinsame Ressource impliziert? Sie wissen nicht, wann die Ticks auf den verschiedenen Charts kommen werden, wann die Signale im TS sein werden usw.? Welchen Unterschied macht es also, in welcher Reihenfolge der Zugriff auf die gemeinsame Ressource erfolgt? Wenn das Modul in diesem Algorithmus anhängig ist, dann ist es korrekt (lassen Sie es warten). Aber nicht korrekt, im Sinne der Konstruktion des Algorithmus.
Lesen Sie Richter. Er hat bereits alles richtig beschrieben.
1. die Warteschlange wird vom System in eine Warteschlange gestellt. 2. Die Reihenfolge, in der sie ausgeführt werden, ist nicht garantiert. Es kann lange dauern, bis es ausgeführt wird.
3) Gibt es einen anderen Weg in diesem fehlerhaften Algorithmus, der eine besondere Reihenfolge der Adressierung der gemeinsamen Ressource impliziert?
4. Sie wissen nicht, wann die Ticks auf den verschiedenen Charts kommen, wann die Signale im TS sein werden, usw.?
5. Welchen Unterschied macht es dann, in welcher Reihenfolge der Zugriff auf die gemeinsame Ressource erfolgt? Wenn das Modul in diesem Algorithmus anhängig ist, dann ist es korrekt (lassen Sie es warten). Aber nicht korrekt, im Sinne der Konstruktion des Algorithmus.
6. Lesen Sie Richter. Er hat bereits den richtigen Weg beschrieben.
Gehen wir in eine zweite Runde.
1. Das System weiß nicht, welche Aufgabe tatsächlich ausgeführt wurde und welche in der Aufgabe selbst abgelehnt wurde. D.h. aus Sicht des Systems ist die Aufgabe erledigt, aber da wir nur eine Aufgabe übrig gelassen und den Rest blockiert haben, ist aus unserer Sicht nur eine Aufgabe erledigt. Es ist also unsere Aufgabe, dafür zu sorgen, dass die Aufgaben regelmäßig nach Prioritäten geordnet werden.
1 и 2. Die Warteschlange ist aufgereiht, aber die Reihenfolge ist nicht garniert)))) Es wird also nicht aufgereiht, sondern es wird nur ein atomarer Zugang gewährt,
3. warum nicht? Alles liegt in den Händen des Programmierers.
4. Alles liegt in den Händen des Programmierers.
5. Wenn sie stehen würde. Aber das ist nicht der Fall. Die Aufgabe wird nicht in die Warteschlange gestellt, sondern nur ausgeführt oder nicht. Bei der nächsten Sperre (Tick) ist es dasselbe, nur mit dem Ball... es ist unbekannt, wer zuerst verdient, und der Rest ist im Aus.
6. Warum? Wie Sie sehen, ist es nicht immer sinnvoll, intelligente Bücher zu lesen. Sie scheinen gelesen zu haben, aber Sie verstehen nicht, wovon wir sprechen. Ich habe nicht gelesen, aber ich verstehe.
Gehen wir es noch einmal durch.
1. Das System weiß nicht, welche Aufgabe tatsächlich erledigt wurde und welche innerhalb der Aufgabe selbst abgelehnt wurde. Das heißt, aus der Sicht des Systems ist die Aufgabe erledigt, aber da wir nur eine Aufgabe übrig gelassen und die anderen blockiert haben, ist aus unserer Sicht nur eine Aufgabe erledigt worden. Es ist also unsere Aufgabe, dafür zu sorgen, dass die Aufgaben regelmäßig nach Prioritäten geordnet werden.
1 и 2. Die Warteschlange ist aufgereiht, aber die Reihenfolge ist nicht garniert)))) Es wird also nicht aufgereiht, sondern es wird nur ein atomarer Zugang gewährt,
3. warum nicht? Alles liegt in den Händen des Programmierers.
4. Alles liegt in den Händen des Programmierers.
5. Wenn ich es täte. Das ist aber nicht der Fall. Die Aufgabe steht nicht in der Warteschlange, sie wird nur ausgeführt oder nicht. Auf der nächsten Sperre (tick), die gleiche Art und Weise, rein aus dem Ball ... es ist unbekannt, wer zuerst zu verdienen, und der Rest sind hinter dem Boron.
6. Warum? Wie Sie sehen, ist es nicht immer sinnvoll, intelligente Bücher zu lesen. Sie scheinen gelesen zu haben, aber Sie verstehen nicht, wovon wir sprechen. Ich habe nicht gelesen, aber ich verstehe.
Das ist Ihre Besessenheit von komplexem Code. Anstatt zu vereinfachen, verdrehen Sie komplizierten Code, um die Warteschlange zu unterbrechen.
Ich wollte Richter auch lange Zeit nicht lesen. Aber ich habe es trotzdem gelesen. Die Regeln für die Erstellung von Multithreading-Anwendungen sind einfach. Das Wichtigste ist, es einfach zu halten. Dies ist die Schlussfolgerung von Richter. Andernfalls werden Sie viel mehr Zeit mit der Fehlersuche als mit dem Schreiben verbringen. Übrigens habe ich noch nie eine Multithreading-Anwendung debuggen müssen. Alles funktionierte auf Anhieb.
Das ist Ihre Besessenheit von komplexem Code. Anstatt zu vereinfachen, verdrehen Sie komplizierten Code, um die Warteschlange zu unterbrechen.
Ich wollte Richter auch lange Zeit nicht lesen. Aber ich habe es trotzdem gelesen. Die Regeln für die Erstellung von Multithreading-Anwendungen sind einfach. Das Wichtigste ist, es einfach zu halten. Dies ist die Schlussfolgerung von Richter. Andernfalls werden Sie viel mehr Zeit mit der Fehlersuche als mit dem Schreiben verbringen. Übrigens habe ich noch nie Multi-Thread-Anwendungen debuggen müssen. Alles funktionierte auf Anhieb gut.
Wie kompliziert ist es? Welche komplizierten Codes? Das ist das für die Aufgabe erforderliche Minimum. Und Ihr Ansatz ist noubertal. Alles, was getan wird, muss zuverlässig funktionieren und darf sich nicht auf den Zufall verlassen.
Was hat Richter damit zu tun? Was hat das mit Multithreading-Systemen zu tun? Erinnern Sie sich an das ursprüngliche Problem, mit dem diese Diskussion begann.
Können Sie mir einen Tipp geben? Print(" Itogo_Profit",Itogo_Profit, " Profit_pomnim " , GlobalVariableGet("Profit_pomnim" ) wird nicht kompiliert;
Können Sie mir einen Tipp geben? Print(" Itogo_Profit",Itogo_Profit, " Profit_pomnim " , GlobalVariableGet("Profit_pomnim" ) wird nicht kompiliert;
Was ist denn so schlimm daran? Was für ein komplizierter Code? Dies ist das für die Aufgabe erforderliche Minimum. Und Ihr Ansatz ist nouber Ansatz. Alles, was getan wird, sollte garantiert zuverlässig funktionieren, ohne dass man sich auf den Zufall verlassen muss.
Was hat Richter damit zu tun? Was hat das mit Multithreading-Systemen zu tun? Erinnern Sie sich an das ursprüngliche Problem, mit dem diese Diskussion begann.
Gut, schreiben Sie es, wie Sie wollen. Ich werde dich nicht dazu überreden. Ich habe Ihnen alles gesagt, was ich kann.
Die ursprüngliche Aufgabe bestand darin, eine Synchronisierung für die Bezugnahme auf die Depotgröße vorzunehmen. Der Code, den ich geschrieben habe, löst das Problem perfekt. Alles ist so, wie es sein soll. Mit minimalem Zeitaufwand für den Bezug auf die Ressource. Alle Module werden fast in der gleichen Reihenfolge wie die Anfragen bearbeitet, mit einigen Ausnahmen. Das ist unerheblich.
Ich habe sie speziell für Sie hervorgehoben. Dies ist eine der Regeln für Multithreading-Anwendungen. Wenn Sie Threads haben, deren Ausführung lange dauert, müssen Sie sie in eine Warteschlange stellen, und das ist wichtig, es ist ein fehlerhafter Algorithmus. Sie müssen es neu machen. So kann man das nicht schreiben. Du darfst aber alles machen. Schreiben Sie...
1. gut, schreiben Sie es, wie Sie wollen. Ich werde Sie nicht überreden. Ich habe Ihnen alles gesagt, was ich kann.
(2) Ursprünglich bestand die Aufgabe darin, die Synchronisierung für die Bezugnahme auf die Depotgröße vorzunehmen.
Der Code, den ich geschrieben habe, löst das Problem perfekt. Alles ist so, wie es sein soll. Mit minimalem Zeitaufwand für den Bezug auf die Ressource. Alle Module werden fast in der gleichen Reihenfolge wie die Anfragen bearbeitet.
4. Speziell für Sie hervorgehoben. Dies ist eine der Regeln für Multithreading-Anwendungen. Wenn Sie Threads haben, deren Ausführung lange dauert, müssen Sie sie in eine Warteschlange stellen, und das ist wichtig, das ist ein falscher Algorithmus. Sie müssen es neu machen. So kann man das nicht schreiben. Du darfst aber alles machen. Schreiben Sie...
1. Ich hatte keine Fragen an Sie, schätzen Sie Ihren Auftrag nicht zu hoch ein.
2. beliebtes Wort ist "Synchronizität"? Es war der Stumpf, parallele Aufgaben sequentiell auszuführen.
3. Löst das Problem, aber nicht perfekt. Die Nuber-Lamer-Methode löst das Problem.
4. Huhu, aufwachen!