2010-09-14 28 views
5

Me pregunto cómo podría implementar una llamada asincrónica en C++ estándar.Subprocesos asíncronos en C++ estándar

Tengo un programa de procesamiento de imagen/video y deseo agregar otra función/función, pero me gustaría que se ejecute en otro hilo o que se ejecute de forma asíncrona al hilo original.

Solo quiero notificar el hilo principal cuando sucedió algo en este nuevo hilo. (Esto no ocurre siempre y no hay ninguna razón por la cual el hilo principal deba esperar a que finalice este nuevo proceso. Por lo tanto, prefiero una llamada asíncrona, si es más simple que la programación multiproceso)

Espero estar en lo cierto camino.

Gracias de antemano.

Ignacio.

ACTUALIZACIÓN: Actualmente no estoy usando ninguna biblioteca de hilos porque hasta ahora no la necesitaba. Estaba pensando en Boost ... ¿es una buena idea? ¿Dónde debo comenzar si quiero hacer algunas llamadas asíncronas?

+3

¿Estándar actual o C++ 0x? El estándar actual no tiene soporte para hilos, y la respuesta debe ser en términos de una biblioteca de elección. –

+1

Si desea una biblioteca de hilos portátil con una bonita interfaz C++ para futuros, entonces impulsar es una buena opción. –

Respuesta

6

El estándar actual de C++ no define tal cosa, pero C++ 0x sí lo define. Eso deja un par de opciones. El más limpio es probablemente usar una implementación actual que incluya la clase C++ future (y parientes). Esto parece ser exactamente el tipo de cosa que estás buscando. Dependiendo del compilador que esté utilizando, es posible que el soporte ya esté empacado (por ejemplo, creo que normalmente está incluido en gcc 4.5), o puede que desee/necesite usar la versión de Boost (aunque no creo que sea parte de la versión oficial) Versión de Boost: debe mirar en la bóveda).

De lo contrario, puede hacer algo por su cuenta al generar un grupo de subprocesos y enviarle una tarea. Si lo desea, mi consejo sería seguir la interfaz estándar para un future lo más cerca posible; es casi inevitable que en algún momento tengas futuros disponibles, y probablemente prefieras usarlos en lugar de mantener tu propia versión.