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

 
Roman:

Me gusta todo )) diferentes enfoques para entender y luego elegir el que tiene más sentido para mí y se ajusta a los requisitos, es simple.

Todo el mundo trabaja con DLL, con las maravillas de ICL sólo un grupo de sectarios que piensan que es la más alta competencia.
 
Yuriy Asaulenko:
Todo el mundo trabaja con DLL, sólo un grupo de sectarios que creen que es la máxima competencia trabajan con los milagros de MKL.

Eso es divertidísimo, y no podría estar más de acuerdo ))))
Bien ido a leer los manuales y a pensar en las opciones que se ofrecen.
Gracias a todos los que realmente no flub, sugirió varias soluciones.
Ahora hay mucho donde elegir.

 
Por cierto, me recuerda a un viejo chiste.
Congreso Médico Internacional. Informe de la delegación rusa - "Extirpación de amígdalas por el ano".
Lo leemos. A continuación, preguntas del público.
- Admiramos la habilidad y los logros de la cirugía rusa. Pero, ¿por qué por el pasillo trasero?
- Así lo hacemos todos.
 
Vict:

¿Entiendo correctamente que Futures y Async son estándar sólo para C++?
¿No existe una biblioteca similar en C?

 
Roman:

¿Entiendo correctamente que Futures y Async son estándar sólo para C++?
¿No hay una biblioteca similar en C?

Sí. Cish std también tiene soporte multihilo https://en.cppreference.com/w/c/thread

ZS: también podrías leer el libro "c++ concurrency in action" de anthony williams. Por ejemplo, en el capítulo 9, escribe "pool de hilos".

Thread support library - cppreference.com
  • en.cppreference.com
If the macro constant is defined by the compiler, the header and all of the names listed here are not provided. Function names, type names, and enumeration constants that begin with either , , , or , and a...
 
Vict:

Sí. Cish std también tiene soporte multihilo https://en.cppreference.com/w/c/thread

HH: también podrías leer el libro "c++ concurrency in action" de anthony williams. Por ejemplo, en el capítulo 9, escribe "pool de hilos".

No me fijé en el enlace Ver también al final de la página ))
Lo tengo, st
d::thread está en C, perostd::async no ((
Estoy leyendo este libro ahora )) Parallel C++ programming in action, Anthony Williams.
El libro está en el archivo adjunto,
async empieza en el capítulo 4, bastante fácil de leer.
Y Kurt Ganteroth, en su libro Optimizing C++ Programs, afirma que es 14 veces más caro crear hilos que usar std::async.
Por eso en un principio quería usar async, pero tampoco sabía mucho de hilos en C/C++,
porlo que silos hilos son más caros, se caen por el uso de todos modos.
Pero resulta que en C,std::async no existe((


 
Roman:

No me fijé en el enlace Ver también al final de la página ))
Lo tengo, st
d::thread está en C, pero std:: async no ((
Estoy leyendo este libro ahora )) Programación paralela en C++ en acción, por Anthony Williams.
Si te interesa el libro está en el archivo adjunto, async empieza en el capítulo 4, bastante fácil de leer.
Y Kurt Ganteroth, en su libro Optimizing C++ Programs, afirma que es 14 veces más caro crear hilos que utilizar std::async.
Por eso en un principio quería usar async, pero tampoco sabía mucho de hilos en C/C++,
por lo que silos hilos son más caros, no vale la pena usarlos de todos modos.
Pero resulta que en C,
std:: async no existe ((

Un hilo no es más caro, sólo es una herramienta de nivel inferior con la que se puede hacer cualquier cosa. Puedes hacer tu propio pool de hilos simple en "hilos caros" - una hora de escritura (o tomar una lib ya hecha).

crear hilos es 14 veces más caro que usar std::async.

Tal vez si hay un grupo de hilos dentro de async, pero ese no es siempre el caso https://stackoverflow.com/questions/15666443/which-stdasync-implementations-use-thread-pools.

Como resultado, async es una caja negra e incontrolable. No te insto a escribir tu propio pool, si te sientes cómodo con async, bien.

ZS: había rumores de que async iba a ser eliminado de c++17.
Which std::async implementations use thread pools?
Which std::async implementations use thread pools?
  • 2013.03.27
  • KnowItAllWannabeKnowItAllWannabe 5,31455 gold badges3434 silver badges7676 bronze badges
  • stackoverflow.com
One of the advantages of using instead of manually creating objects is supposed to be that can use thread pools under the covers to avoid oversubscription problems. But which...
 

Async puede ejecutarse de forma sincrónica, hay una bandera para ello. Creo que la agrupación de hilos en los pluses es complicada y sólo tiene sentido escribirla en caso de extrema necesidad. Será mejor que le eches un vistazo a Sharp, a esa agrupación de hilos.

También recomendaría "Scott Meyers: Efficient and Modern C++". 2016, fácil de leer, como una superproducción. He adjuntado el archivo a continuación. Tiene un interesante capítulo sobre los hilos. Y en general, hay que leer a Meyers, porque hay que hacerlo )))

 
Andrei Novichkov:

Creo que la agrupación de hilos en los profesionales es complicada y sólo tiene sentido si es absolutamente necesaria.

No lo hagas más difícil de lo necesario. Si no quieres escribirlo tú mismo, puedes coger fácilmente uno ya hecho, una rápida búsqueda aquí https://github.com/vit-vit/ctpl. Y es algo menos predecible, a diferencia de async (que suele ser criticado).

vit-vit/CTPL
vit-vit/CTPL
  • vit-vit
  • github.com
More specifically, there are some threads dedicated to the pool and a container of jobs. The jobs come to the pool dynamically. A job is fetched and deleted from the container when there is an idle thread. The job is then run on that thread. A thread pool is helpful when you want to minimize time of loading and destroying threads and when you...
 
Vict:

No lo hagas más difícil de lo que tiene que ser. Si no quieres escribirlo tú mismo, puedes conseguir fácilmente uno ya hecho, aquí tienes una búsqueda rápida https://github.com/vit-vit/ctpl. Y es algo menos predecible, a diferencia de async (que suele ser criticado).

No, no me apetece )))))) Pero una búsqueda superficial también es, umm, cargada. Me he encontrado con mucha basura en github. Pero me interesa otra, ¿hay alguna tarea que realmente requiera thread pooling? ¿No se trata de crear un hilo, olvidarlo y esperar a que termine, sino de ponerlo en común como describe Williams? Parece ser un ejemplo de cajero automático, si no me equivoco: ¿qué tarea podría justificar semejante milagro? Todavía no se me ocurre tal tarea. Y por qué no te fijas realmente en ThreadPool donde ya está todo hecho, hay documentación y ejemplos.

Razón de la queja: