2010-12-13 17 views
6

Ho avuto un po 'di problemi con il nuovo runtime di Concurrency nativo di Visual Studio (ConcRT). È solo una svista, o c'è una ragione valida per cui nessun movimento incrociato di dati ha semantica del movimento? Sono tutti copia semantica. Non è possibile spostarsi in una coda concorrente, non è possibile spostarsi con asend, ecc. Non è possibile nemmeno spostare le code concomitanti di costruzione.Rif. Di riferimento in concorrenza

+0

Hehe, è * esplicitamente * elencato in questa pagina introduttiva sul CCR: http://msdn.microsoft.com/en-us/library/dd504870.aspx Probabilmente è troppo vecchio per aver raccolto il C + + 0x miglioramenti. Codice come questo stufato per un po '. –

+1

@Hans: si tratta di riferimenti rvalue come generici "supportiamo questo in MSVC10", non c'è niente in proposito nel CCR in particolare. – Puppy

+0

Ho solo pensato che fosse divertente che fosse elencato nella pagina iniziale di CCR. –

risposta

3

Non conosco questo framework specifico, ma in genere per le code inter thread è necessario disporre di semantica della copia.

Immagina di creare un oggetto, di prendere un riferimento/puntatore e poi spostarlo in coda. Quindi l'altro thread lo sposta fuori dalla coda. Quindi entrambi i thread possono accedervi contemporaneamente.

Penso che nel caso generale sia solo necessario avere una copia di sempre di add o remove, non di entrambi (vale a dire solo una copia necessaria). per esempio. copy-in move-out, ma questo sarebbe semanticamente lo stesso di copy-in copy-out.

1

Esistono numerose aree in cui il supporto del valore nominale potrebbe migliorare ConcRT, agenti e PPL. Come ogni grande progetto software, quando si creano funzionalità che si basano su altre nuove funzionalità, c'è sempre il rischio di poter consegnare tutto in una volta.

PPL è stato un importante passo avanti ma non abbiamo mai detto che fosse "fatto". :-)

Se si dispone di suggerimenti particolari in cui ConcRT, PPL o la libreria Agenti devono supportare semantica di spostamento, aprire un suggerimento in connect.microsoft.com.