Estoy trabajando con una base de código C++ de tamaño medio que actualmente es completamente de un solo subproceso. Sin embargo, ha llegado el momento de buscar la simultaneidad y el paralelismo para el aumento del rendimiento. Estoy muy interesado en el modelo de simultaneidad del lenguaje de programación Go de Google, con rutinas muy livianas y un sistema de canales de comunicación.bibliotecas de C++ que implementan Go rutinas o Go canales?
Lamentablemente, por una variedad de razones perfectamente válidas, el proyecto debe permanecer en C++. Entonces mi pregunta es: ¿hay una biblioteca C++ que se aproxime al paradigma Go para el paralelismo? Específicamente, ¿hay una aproximación de goroutines o go channels disponible para C++? Mi plan de respaldo es solo usar boost :: thread.
La aplicación en cuestión es una simulación patentada de larga duración para el dominio de previsión financiera. Por lo general, está vinculado a la CPU, pero también se bloquea en IO cuando hay nuevos datos disponibles. Muchos de los cálculos involucrados no dependen de resultados previos y podrían hacerse fácilmente para que se ejecuten en paralelo. Poder ejecutar la aplicación en un contexto distribuido es un objetivo a largo plazo, pero no uno que deba resolverse de inmediato.
Pregunta similar: http://stackoverflow.com/questions/2190231/looking-for-ac-or-c-library-providing-a-functionality-similar-to-google-gos-c – JimR
¿Cómo son similares? ? –
Realmente necesita ser más específico acerca de su proyecto. Diversos tipos de aplicaciones beneficiarán (o no) diferentes modelos de subprocesamiento. Sea que las corutinas (que son básicamente las rutinas) o los hilos; quizás un modelo de evento es más adecuado, o una de las diversas bibliotecas de actores. ** Describa su aplicación **. – jer