2010-12-13 7 views
6

Me he estado familiarizando un poco con el nuevo tiempo de ejecución de Concurrency nativo de Visual Studio (ConcRT). ¿Es solo un descuido, o hay una razón válida de que ningún movimiento de datos cruzado tiene semántica de movimiento? Todos son semánticas de copia. No se puede mover a una cola concurrente, no se puede mover con una orden, etc. No se puede mover ni construir colas simultáneas.Rs refs en concurrencia

+0

Hehe, está * explícitamente * en la lista en esta página de inicio sobre el CCR: http://msdn.microsoft.com/en-us/library/dd504870.aspx Probablemente es demasiado viejo para haber recogido el C + + 0x mejoras. Código como este guisa por un tiempo. –

+1

@Hans: Eso es referencias de valor como un genérico "lo apoyamos en MSVC10", no hay nada sobre eso en el CCR específicamente. – Puppy

+0

Pensé que era gracioso que apareciera en la página de inicio de CCR. –

Respuesta

3

No conozco este marco específico, pero generalmente para las colas entre hilos, debe tener semántica de copia.

Imagine que creo un objeto, le tomo una referencia/puntero y luego lo muevo a la cola. Luego, el otro hilo lo mueve fuera de la cola. Entonces, ambos hilos pueden acceder a él al mismo tiempo.

Creo que, en el caso general, solo es necesario tener una copia siempre añadida o eliminada, no ambas (es decir, solo se necesita una copia). p.ej. Mudanza de copiado, pero esto sería semánticamente lo mismo que copiado de copiado.

1

Hay varias áreas en las que el soporte de rvalue podría mejorar ConcRT, los agentes y el PPL. Al igual que cualquier otro gran proyecto de software, cuando construye funciones que dependen de otras características nuevas, siempre existe el riesgo de que pueda entregar todo al mismo tiempo.

PPL fue un gran paso adelante, pero nunca dijimos que estaba "hecho". :-)

Si tiene sugerencias particulares en las que ConcRT, PPL o la biblioteca Agents deberían admitir la semántica de movimiento, abra una sugerencia en connect.microsoft.com.