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

 
Andrei Novichkov:

¿Por qué no leer realmente sobre la bandera en la documentación? En https://en.cppreference.com . Y ejemplos con discusión en stackoverflow.com. Yo suelo utilizar estas fuentes de información, y te aconsejo que hagas lo mismo.

¿Por qué, entonces, quieres participar en la conversación si no eres responsable de tus palabras? Me interesaba tu opinión, no la de los listos del manual. Apártate de mi camino. Puedo leer los muelles sin sus instrucciones. Y no necesito todo este zoo de future/promise/async para llamar a la función en un hilo.

 
Vict:

¿Por qué entonces entras en la conversación si no respondes de lo que dices? Me interesaba tu opinión, no la de los listos del manual. Apártate de mi camino. Puedo leer los muelles sin sus instrucciones. Y no necesito todo este zoo de future/promise/async para llamar a la función en un hilo.

No tiene ningún sentido. No lo sabes, te dije dónde encontrar la información. Y fue mi culpa. Sé amigo de los libros más a menudo.
 
Andrei Novichkov:
No tiene ningún sentido. No lo sabes, te dije dónde encontrar información. Y fue mi culpa. Sé amigo de los libros más a menudo.

Al parecer, tú tampoco lo sabes. ¿Por qué escribir sobre nada? Tal vez no lo sé, ¿cuál es el problema? Le pedí una opinión normal, y me mandó a algún sitio.

En la lista negra, camarada.

 
Vict:

Al parecer, tú tampoco lo sabes. ¿Por qué escribir sobre nada? Tal vez no lo sé, ¿cuál es el problema? Le pedí una opinión normal y me dijo que fuera a algún sitio.

En la lista negra, camarada.

No te envié a ninguna parte, ni siquiera lo pensé. No respondo bien a esas preguntas con mis propias palabras, así que escribí sobre la documentación. De nuevo, ¿por qué hay que ofenderse? Pero como quieres, negro, tan negro.
 
Andrei Novichkov:
No te he enviado a ningún sitio, ni se me ocurriría. Se me da mal responder a estas preguntas con mis propias palabras, así que escribí sobre la documentación. Una vez más, ¿por qué hay que ofenderse? Pero como quieres, negro, tan negro.

Bueno la documentación sobre esto es de poca utilidad

std::launch::deferred la tarea se ejecuta en el hilo de llamada la primera vez que se solicita su resultado (evaluación perezosa)
Realmente no entiendo por qué necesito tal milagro, puedo pasar fácilmente un puntero a una función en el hilo que necesito y calcularlo allí sin ningún async( std::launch::deferred).
 
Vict:

Realmente no entiendo por qué necesito tal milagro, puedo pasar fácilmente un puntero a una función en un hilo que necesito y calcularlo allí sin ningún async( std::launch::deferred).

puede ser off-topic, pero:

Me he dado cuenta de que los ejemplos de Microsoft suelen estar escritos como código autodocumentado, por lo que escriben construcciones engorrosas que pueden ser ampliadas y sustituidas por el valor final ( como si vieras el código, y lo obtuvieras todo de un plumazo)) )

HH: En los ejemplos de C# desafortunadamente no es así, varias veces escribí C# con la creencia de que es de hecho un análogo de C++ con cierta propensióna usar OOP, resulta que no es así, no es C++ en absoluto, a menudo no puedes "llegar" a los campos de la clase sin castear a una clase base, por eso tengo que usar largas construcciones poco manejables, en general, ¡el análisis de las bibliotecas ya hechas para C# es una verdadera aventura!

 

Tenga en cuenta que, por defecto, estas dos banderas se aplican juntos diferido | async, que elimina la responsabilidad del desarrollador. Estamos hablando de la función del hilo principal, sí, puedes pasarle cualquier cosa, incluso un puntero a una función, o un functor, como argumento. Y la bandera diferida puede incluso implicar la ejecución sincrónica de la función. Ves, te lo dije, soy malo respondiendo a esas preguntas con mis propias palabras). Te confundes. Por lo general, se deja todo por defecto y no se molesta con estas banderas, tal vez no es correcto.

 
Igor Makanu:

HH: En los ejemplos de C# desafortunadamente no es así, varias veces escribí en C# confiando en que es esencialmente un análogo de C++ con alguna tendencia deuso obligatorio de la POO, resultó que no es así, no es C++ en absoluto, a menudo no se puede "llegar" a los campos de la clase sin hacer un casting a la clase base, por eso hay que usar construcciones largas y engorrosas, en general, ¡analizar librerías ya hechas para C# es toda una aventura!

Bueno, MS tiene muy buena documentación sobre Spurs. Todo se explica con detalle. No puedo quejarme.
 
Vict:

Bueno, la documentación sobre esto es de poca utilidad

Realmente no entiendo por qué necesito tal milagro, puedo pasar fácilmente un puntero a una función en un hilo que necesito y calcularlo allí sin ningún async( std::launch::deferred).
Por ejemplo, necesitas una función que calcule valores con los parámetros actuales en la pila, pero no ahora y no en este ámbito. Así que, creas std::asinc, pero, aquí está el problema, uno de los parámetros es una referencia o puntero a una variable global, pero en el cálculo no necesitarás el valor actual de esta variable, sino el que habrá después, por eso se crean std::lounch::asinc y std::lounch:: bitmaskdiferido y puedes pasar el valor a la función ahora y realizar el cálculo después.
 
Vladimir Simakov:
Bien, por ejemplo, necesitas que la función calcule los valores con los parámetros actuales en la pila, pero no ahora y no en este ámbito. Así que creas std::asinc, pero aquí está el problema, uno de los parámetros es una referencia o puntero a una variable global, pero los cálculos no necesitarán el valor actual de esta variable, sino el que habrá más tarde, por eso se crean std::lounch::asinc y std::lounch::: bitmasks diferidos y puedes pasar el valor a la función ahora y realizar los cálculos más tarde.

Así que puedo tomar una función que paso a async, ligar argumentos a ella, y almacenarla hasta que sea el momento de llamarla (o enviarla a otro hilo). ¿Qué diferencia hay entre almacenar el futuro o la salida de std::bind()?

La única explicación razonable que se me ocurre es el control manual sobre el número de hilos que se ejecutan en el pool (si no confiamos en el async|deferred por defecto) - por ejemplo, si el sistema está demasiado ocupado, dejar de enviar trabajos con la bandera async, enviar deferred.

En general, estoy un poco decepcionado por la lentitud de async(), voy a crear mi propio pool de hilos ligeros, me parece que será mucho más rápido.

Razón de la queja: