Programmazione asincrona e multithread in MQL - pagina 8

 
Dmitry Fedoseev:

Sembra che la differenza speciale tra asincronia e multithreading provenga dalla stessa area del problema della differenza puntatore/riferimento che affligge alcune persone.

L'asincronia è implementata attraverso un thread separato e non è così importante se questo processo è fornito dal processore o da qualsiasi altro dispositivo. La creazione di un processo implica la sua asincronia perché esiste in parallelo.

L'asincronia è implementata nello stesso thread di esecuzione del programma, attraverso EventLoop, ma come EventLoop è implementato è prerogativa degli sviluppatori, come implementarlo.
Gli stessi gestori standard in mql, per esempio OnTimer funziona in un proprio ciclo, e questo è una specie di EventLoop,
Se volete creare un gestore separato per i metodi asincroni, tutti i compiti saranno perfettamente eseguiti in un ciclo asincrono.

 
Roman:

L'asincronia è implementata nello stesso thread di esecuzione del programma, attraverso EventLoop, ma come EventLoop è implementato, è prerogativa degli sviluppatori, come implementarlo.
Gli stessi gestori standard in mql, per esempio OnTimer funziona in un proprio ciclo, e questo è una specie di EventLoop,
Se volete creare un gestore separato per i metodi asincroni, tutti i compiti saranno perfettamente eseguiti in un ciclo asincrono.

Mi scusi, dove è implementata l'asincronia tramite EventLoop?

Potete fare qualcosa come EventLoop da soli ora, gli sviluppatori del terminale non sono affatto necessari qui.

 
Dmitry Fedoseev:

Mi scusi, dove è implementata l'asincronia tramite EventLoop?

Potete fare qualcosa come EventLoop da soli ora, gli sviluppatori del terminale non sono affatto necessari qui.

EventLoop è implementato in asyncio, e come penso lo stesso principio è usato in altre librerie asincrone.
Anche WinAPI, per quanto ne so, usa il principio degli eventi per l'asincronia.
Al momento non possiamo implementare una modalità asincrona completa utilizzando strumenti standard,
La ragione è che il gestore OnTimer, per esempio, non controlla l'esecuzione del compito e invece esegue il ciclo in modo sequenziale.
Cioè, il gestore manca del meccanismo di esecuzione asincrona dei compiti.

 

Tutti cercano su Google il concetto di stallo!

In MQL5 l'aggiunta di thread romperà il sistema di test e l'intero agent cloud andrà in crash.

Una soluzione a questa limitazione è possibile con le DLL. Se non volete imparare C#, C++, C, Python - è un vostro problema. Nel mondo di oggi, un programmatore deve conoscere diversi linguaggi per selezionare correttamente uno strumento per un particolare compito.

Quelli che conoscono 1C non sono considerati programmatori. Lo stesso vale per MQL5.

 
Roffild:

Tutti cercano su Google il concetto di stallo!

In MQL5 l'aggiunta di thread romperà il sistema di test e l'intero agent cloud andrà in crash.

Una soluzione a questa limitazione è possibile con le DLL. Se non volete imparare C#, C++, C, Python - è un vostro problema. Nel mondo di oggi, un programmatore deve conoscere diversi linguaggi per selezionare correttamente uno strumento per un particolare compito.

Quelli che conoscono 1C non sono considerati programmatori. Lo stesso vale per MQL5.

Se il programma MQL multi-threaded rompe il sistema di test, allora che differenza fa, se è collegato tramite una DLL o una normale? In ogni caso, dovrete scegliere tra i test e il multi-threading. Ma è meglio scegliere all'interno di MQL, perché l'integrità è un vantaggio per il programma.
 
Roffild:

Tutti cercano su Google il concetto di stallo!

In MQL5 l'aggiunta di thread romperà il sistema di test e l'intero agent cloud andrà in crash.

Una soluzione a questa limitazione è possibile con le DLL. Se non volete imparare C#, C++, C, Python - è un vostro problema. Nel mondo di oggi, un programmatore deve conoscere diversi linguaggi per selezionare correttamente uno strumento per un particolare compito.

Quelli che conoscono 1C non sono considerati programmatori. Lo stesso vale per MQL5.

Durante i test, tutti i compiti possono essere risolti uno per uno e i risultati possono essere restituiti in determinati momenti (si può aspettare nel tester). Non solo si può, ma si deve, in modo che corrisponda alla realtà.

Mi chiedo cosa ne pensano i programmatori di 1C? Sono interessati all'opinione di qualcun altro?

 
Реter Konow:
Se il programma MQL multi-threaded rompe il sistema di test, allora che differenza fa, se è collegato tramite una DLL o una normale? In ogni caso, dovrete scegliere tra i test e il multi-threading. Ma è meglio scegliere all'interno di MQL, perché l'integrità è un vantaggio per il programma.
Generalmente, il multi-threading è richiesto in modalità normale. I test funzionano sempre con un piccolo modulo di programma - una strategia, e tutte le altre capacità del programma hanno un resto. Visualizzazione e così via. Così, durante i test solo il thread in cui si trova il modulo di strategia sarà in esecuzione. Nel tester, alcune funzioni ed eventi regolari sono disabilitati, quindi lasciate che anche i thread siano disabilitati.
 
Реter Konow:
Se il programma MQL multi-threaded rompe il sistema di test, che differenza fa come è collegato, tramite una DLL o una normale? In ogni caso, dovrete scegliere tra i test e il multi-threading. Ma è meglio scegliere all'interno di MQL, perché l'integrità è un vantaggio per il programma.

C'è una differenza. Le DLL non sono ammesse nel cloud. E le DLL stesse sono disabilitate dall'inizio. Abilitando il permesso per le DLL, state abdicando alla responsabilità dell'esecuzione sicura del codice.

 
Roman:

EventLoop è implementato in asyncio, e credo che lo stesso principio sia usato in altre librerie asincrone.
...

Altre librerie asincrone non usano questo principio.

 
Dmitry Fedoseev:

Altre librerie asincrone non usano questo principio.

Questa era solo un'ipotesi, non ho controllato dove altro si usa.
Cercando su Google quali linguaggi usano EventLoop, si tratta di Py, JS, Qt, probabilmente altri.
Il punto non è dove si applica, ma nella tecnologia stessa senza usare fili.
Allora perché non prendere in prestito la tecnologia e implementare in mql il vostro EventLoop?

Motivazione: