Programación asíncrona y multihilo en MQL - página 13

 
Реter Konow:

Si añaden el multithreading, ¿se sentirá peor? Y por eso añadieron un montón de cosas a MQL, y es algo realmente útil. Pero su utilidad sólo puede ser entendida por una persona, que escribe programas muy complejos y engorrosos en MQL. Si no entiendes por qué necesitamos el multithreading, significa que no escribes esos programas. Cuando lo hagas, lo entenderás. Es muy sencillo. ))

El multithreading es definitivamente necesario, especialmente en el probador, especialmente en el modo multiinstrumento. A menudo me falta rendimiento. Pero no soy un experto en programación y no entiendo muy bien las sutilezas, sólo sé que necesito contar muchas cosas en paralelo). Y poner el probador en paralelo sería extremadamente útil.
 
Реter Konow:

Si añaden el multithreading, ¿lo hará peor?

¡definitivamente no - será mejor, ! - PERO la cuestión clave aquí es el apoyo: ¿quién le explicará cómo usarlo? - ¿Quién arreglará los errores? - ¿Quién proporcionará una funcionalidad comprensible garantizada?

De acuerdo con la idea básica de los desarrolladores de cómo y quién debe utilizar la MT, proporcionan la funcionalidad correspondiente a C++, eliminando así el "dolor de cabeza" de la formación y la explicación de cómo funciona - la literatura sobre C++ y los ejemplosde escritura de programas de nivel de entrada en la web durante 20 años ha recogido una gran cantidad

¿Has visto un paquete ya hecho (según el problema de TC) que se aplicaría a C++?

 
Igor Makanu:

¿"Expertos"? - No tienes nada que hablar, métete tu imho... Esta es una gran comunidad de MQL con profesionales en diferentes campos, desafortunadamente, no has mostrado ningún conocimiento que sea útil para la comunidad, puedes acusarme de lo que quieras - "¡tú eres el experto! "


¿Los desarrolladores lo harán? - No puedes explicar ni siquiera POR QUÉ es necesario, ¿verdad? )))

¿Cuál es el objetivo de MetaQoutes? - el objetivo, como el de cualquier empresa de informática, es obtener beneficios. No sé por qué, MetaQoutes se toma muy en serio la promoción de sus servicios, se ha trabajado mucho para popularizar el trading algorítmico, para dar material de análisis, para crear una comunidad online... este tipo de caridad sólo lo hacen unas pocas empresas de TI, normalmente los gigantes de la informática

así, la empresa gasta sus recursos en algo que en el futuro (no es seguro) dará beneficios.... y entonces, he aquí... llega un usuario que necesita adaptar el concepto de Python o Java retardado a MQl.... ¿No crees que es divertido? - ¿Cuántos años tienes? ))))


Respeto que la persistencia es a menudo la única manera de encontrar su nicho en la vida! Buena suerte en este duro trabajo!

No hay nada que hablar contigo sobre este tema.
Ni siquiera tienes la lógica suficiente para entender qué beneficio efectivo obtendrá MetaQuotes al poder escribir programas asíncronos.
Y realmente atraerá a los especialistas, que escriben programas asíncronos.
Y hay suficientes especialistas adecuados en la comunidad, con los que puedes discutir problemas e ideas, y no escuchar tu "yo soy un especialista".
Por desgracia, para ser un experto, hay que estar al día con la tecnología, independientemente del idioma en que se utilice.
Ni siquiera oyes lo que te dicen de que C++ también se escribe de forma asíncrona, pero probablemente no lo entiendes, no te has puesto a hacer tareas asíncronas.
Y moderemos tu ardor, ni siquiera puedes comunicarte normalmente.

 
Roman:

Tú eres el que no tiene nada que hablar sobre este tema.

no hablan, pero todavía no hay respuesta:


responder a la pregunta ¿por qué lo necesita el terminal de comercio?
 
Maxim Romanov:
El multithreading es definitivamente necesario, especialmente en el probador, especialmente en el modo multiinstrumento. A menudo me falta rendimiento. Pero no soy un experto en programación y no entiendo muy bien las sutilezas, sólo sé que tengo que contar muchas cosas y en paralelo). Y poner el probador en paralelo sería extremadamente útil.
Y voy a desarrollar una visualización tridimensional, y no es razonable ponerla en un hilo con cálculos, eventos de la interfaz, eventos externos (llamadas al servidor). El DLL no es adecuado siempre por una razón: no se pueden distribuir programas libremente.
 
Igor Makanu:

¡definitivamente no - será mejor, ! - PERO la cuestión clave aquí es el apoyo: ¿quién le explicará cómo utilizarlo? - ¿Quién arreglará los errores? - ¿Quién garantizará que la funcionalidad sea comprensible?

...

Desde mi punto de vista, este es el menor de los problemas. Lo principal es que la gente se comunique sobre este tema. El foro necesita nuevos temas. ¿No es así? Sólo va a mejorar. ¿Qué será lo crítico si hay problemas y errores entre los usuarios? ¿Y cuando no había ninguno? )

 
Andrey Pogoreltsev:

Exiges la ejecución asíncrona de las consultas pero citas el multithreading como ejemplo... Te insté a que lo resolvieras, pero nunca lo hiciste.

Le di una solución a su problema exacto aquí: https://www.mql5.com/ru/forum/318593/page4#comment_12568119

Pero estoy seguro de que ni siquiera has estudiado el tema.

Me parece que si te dan una cola asíncrona, seguirás pidiendo el multithreading... Al menos trata de lidiar con OVERLAPPED y eventos para empezar, no estás pidiendo WinAPI en tu código).

Si introduces el multithreading en el terminal, se enterrará de los programadores deplorables, más rápido que la velocidad de la luz.

Los programadores buscan soluciones a los problemas, no piden que el marco cambie para adaptarse a su ignorancia.

No, te equivocas, lo he mirado todo y definitivamente lo investigaré.
Por cierto, eres el único que ha dado al menos alguna buena dirección gracias, del resto solo flub.
Hay mucha gente que no entiende la esencia del tema, por eso tuve que responder a sus preguntas. Por eso tuve que responder a sus preguntas. Por eso el tema creció.
Hay varias tecnologías para el multithreading o la conexión asíncrona, por eso muchos no lo entienden.
Y tuve que dar apresuradamente muestras de Internet, pero incluso ellas explican de alguna manera la esencia de la tecnología.
Nadie se molestó en mostrar otras tecnologías y explicar cómo funcionan, un coro.

 
Roman:

No, no, te equivocas, lo he revisado todo, lo trataré sin ambigüedades.
Por cierto, eres el único que ha dado al menos alguna dirección verdadera gracias, los demás solo flub.
Hay mucha gente que no entiende la esencia del tema, por eso tuve que responder a sus preguntas. Por eso tuve que responder a sus preguntas. Por eso el tema creció.
Y sobre el multithreading o la conexión asíncrona hay algunas tecnologías, por eso muchos no tienen comprensión.
Y he tenido que poner apresuradamente ejemplos de Internet, pero incluso ellos explican de algún modo la esencia de la tecnología.
Nadie se molestó en mostrar otras tecnologías y explicar cómo funcionan, un coro.

Multithreading: las tareas se ejecutan en varios hilos. Puede ejecutarse en un solo procesador, aunque con multihilos y cambiando entre ellos cuando se agotan las cuotas de tiempo del procesador. Requiere sincronización para acceder a los recursos compartidos. Puede dar lugar a bloqueos, condiciones de carrera, errores deliberación de memoria y otras "sorpresas".

Asíncrono: ejecución de funciones sin bloqueo (es decir, el control se devuelve inmediatamente después de la salida del método), normalmente en otros dispositivos (equipos de red, dispositivos de almacenamiento, periféricos, etc.). Por ejemplo, es posible escribir un servidor multiusuario de alto rendimiento utilizando sólo un hilo y conexiones de cliente de procesamiento de máquinas finales. Todo depende de la finalidad de este servidor.

En tu caso necesitas crear un gran número de conexiones usando WinAPI y puedes comprobar el estado de estas conexiones a través de WaitForMultipleObjects con un tiempo de espera, así no mantienes un hilo temporizador, por ejemplo.

P.D. Teóricamente, también se podría utilizar IOCompletionPort, pero requiere más conocimientos y un diseño cuidadoso.
 
Andrey Pogoreltsev:

Multithreading: las tareas se ejecutan en varios hilos. Puede ejecutarse en un solo procesador, pero con multihilos y cambiando entre ellos cuando se agotan las cuotas de tiempo del procesador. Requiere sincronización para acceder a los recursos compartidos. Puede provocar un bloqueo, una condición de carrera, errores de liberación de memoria y otras "sorpresas".

¿Es realmente tan peligroso? Errores en la liberación de la memoria... Sin embargo, los Asesores Expertos se ejecutan en diferentes gráficos en diferentes hilos y no hay fallos inesperados. Entonces, ¿las tareas distribuidas entre EAs no causarán errores críticos, pero las tareas distribuidas entre hilos dentro de un EA sí? Por supuesto, no soy un experto en estos temas, pero ¿qué problema hay en trasladar el método de distribución de tareas entre los EAs a un único EA? Tal vez haya un problema, no lo discuto.

 
Andrey Pogoreltsev:

Multithreading: las tareas se ejecutan en varios hilos. Puede ejecutarse en un solo procesador, pero con multihilos y cambiando entre ellos cuando se agotan las cuotas de tiempo del procesador. Requiere sincronización para acceder a los recursos compartidos. Puede dar lugar a bloqueos, condiciones de carrera, errores de liberación de memoria y otras "sorpresas".

Asíncrono: ejecución de funciones sin bloqueo (es decir, el control se devuelve inmediatamente después de la salida del método), normalmente en otros dispositivos (equipos de red, dispositivos de almacenamiento, periféricos, etc.). Por ejemplo, es posible escribir un servidor multiusuario de alto rendimiento utilizando sólo un hilo y conexiones de cliente de procesamiento de máquinas finales. Todo depende de la finalidad de este servidor.

En tu caso, necesitas crear un gran número de conexiones usando WinAPI y puedes comprobar el estado de esas conexiones con WaitForMultipleObjects con un tiempo de espera, para no tener que mantener un hilo de temporizador, por ejemplo.

P.D. En teoría, también se podría utilizar IOCompletionPort, pero requiere más conocimientos y un diseño claro.

Ahora, eso es una conversación, yo he hecho ejecuciones no bloqueadas con asyncio, pero si escribes la palabra coroutine o calback aquí, hay mucha confusión y prefiero no decir nada ))
Yo mismo conozco el principio de las llamadas no bloqueantes, pero sólo en python y una biblioteca más de C y C++.
Nunca he trabajado con WinAPI, lo estudiaré, estuve mirando otras librerías, pero da igual, lo principal es entender la sintaxis, y yo entiendo lo que hay )))
Pero durante la conversación sugerí añadir dicha funcionalidad a mql regular, para permitir la escritura de código asíncrono fuera de la caja.
Y empezamos a confundirnos porque no entendíamos para qué y por qué. Porque es porque ))

Razón de la queja: