¿La programación basada en tareas en C ++ requeriría nuevas características estándar de lenguaje?

8

Así que vi este video en Youtube con todos estos maestros de C ++ en GoingNative 2012: panel interactivo donde todos pueden hacer las preguntas.

Este es el video del que hablaba: GoingNative 2012 - Día 1 - Panel interactivo: La importancia de ser nativo

Y a las 0:24:00 alguien puso una pregunta muy interesante:

  

Hemos estado haciendo programación concurrente durante algún tiempo usando pthreads,   usando hilos de Windows, y así sucesivamente, y estoy tan feliz de que C ++ y C   Me encontré con la programación concurrente, pero me parece que es   Ya atrasado por cinco años o diez años porque en este momento tenemos que   Tienen todos estos potentes multinúcleos y la programación de estos   Los multicores realmente no deberían estar basados en hilos, debería estar   basado en tareas y Microsoft tiene la biblioteca PPL y así sucesivamente y   Esto no está totalmente reflejado en el estándar de C ++. [...] Lo único   Lo que me da miedo es que la norma podría ser bloqueada en hilos   y hace que sea muy difícil pasar a basado en tareas   Programación ...

Ahora soy bastante nuevo en estos conceptos y estoy un poco confundido. Lo que en realidad es Programación Basada en Tareas . ¿Se refiere este término a lo mismo que se refiere a Programación sin bloqueo ? ¿Son estos dos términos equivalentes o hay algún vínculo entre ellos?

    
pregunta gnat 16.05.2013 - 18:15

2 respuestas

4

Microsoft tiene la "Biblioteca paralela de tareas" o TPL.

Es una abstracción de más alto nivel sobre subprocesos, y está basada en bibliotecas, por lo que no veo ninguna razón por la que no se pueda crear algo similar en C ++, ya que el TPL ya está basado en subprocesos, y no depende de una versión especial. características en el lenguaje estándar para su implementación (aunque las palabras clave async y await se agregaron al compilador de C # para facilitar dicha programación).

Una Task en la estructura de Microsoft es más o menos equivalente a un Futuro o una promesa . Básicamente, es una función no bloqueante (asíncrona); lo llama, le devuelve el control mientras se ejecuta en un nuevo hilo, y luego recupera el valor de retorno en un momento posterior cuando esté disponible.

El TPL tiene otras instalaciones como Parallel.For , lo que le permite procesar un bucle simultáneamente, utilizando varios subprocesos. Todas estas cosas podrían implementarse en C ++ como funciones de biblioteca. De hecho, dicha biblioteca ya tiene ya escrito .

Por lo que sé, la PPL (Parallel Patterns Library para Microsoft C ++) no depende de ninguna característica de lenguaje especial.

    
respondido por el Robert Harvey 16.05.2013 - 18:31
0

Ha habido subprocesos a través de las bibliotecas de bloques durante años en cpp. Hay Bloques de creación de subprocesos de Intel de Intel que son bastante buenos, y luego hay cosas similares como OpenMP que le permite abstraer los hilos en una especie de 'dejar que el sistema lo haga por usted' (esto es compatible con VC ++, debe establecer el indicador / openmp en sus compilaciones)

Microsoft también está trabajando en Casablanca , que puede no ser una biblioteca de tareas realmente genérica, pero es un marco para escribir tareas basadas en tareas. sistemas (principalmente para aplicaciones web) que utilizan algo similar a modelo de actor de Erlang

    
respondido por el gbjbaanb 16.05.2013 - 19:28

Lea otras preguntas en las etiquetas