La programmazione basata su attività in C ++ richiede nuove funzionalità standard per la lingua?

8

Quindi ho visto questo video su Youtube con tutti questi maestri di C ++ su GoingNative 2012: pannello interattivo in cui tutti potevano porre le domande.

Questo è il video di cui stavo parlando: GoingNative 2012 - Giorno 1 - Pannello interattivo: l'importanza di essere nativi

E alle ore 0:24:00 qualcuno ha posto una domanda molto interessante:

We've been doing concurrent programming for some time using pthreads, using windows threads, and so on and I'm so happy that C++ and C caught up with concurrent programming, but it seems to me like it's already behind by five years or ten years because right now we have we have all these powerful multicores and the programming of these multicores really should not be based on threads, it should be task-based [...] and Microsoft has the PPL library and so on and this is totally not reflecting in the C++ standard. [...] The only thing I'm afraid of is that the standard could be locked into threads and sort of make it very difficult to move to Task-Based Programming...

Ora sono abbastanza nuovo in questi concetti e sono un po 'confuso. Che cos'è in realtà Programmazione basata su attività . Questo termine si riferisce alla stessa cosa che Programmazione Lock-Free fa riferimento a? Sono questi due termini equivalenti o ci sono dei collegamenti tra loro?

    
posta gnat 16.05.2013 - 18:15
fonte

2 risposte

4

Microsoft ha la "Task Parallel Library" o TPL.

È un'astrazione di livello superiore sui thread ed è basata su librerie, quindi non vedo ragioni per cui qualcosa di simile non possa essere costruito in C ++, dal momento che TPL è già basato su thread e non dipende da speciali caratteristiche nello standard del linguaggio per la sua implementazione (sebbene le parole chiave async e await siano state aggiunte al compilatore C # per semplificare tale programmazione).

Una attività nell'ecostruttura Microsoft è più o meno equivalente a un futuro o una promessa . Fondamentalmente, è una funzione non bloccante (asincrona); lo chiami, restituisce il controllo a te mentre viene eseguito su un nuovo thread e quindi recuperi il valore restituito in un secondo momento quando diventa disponibile.

Il TPL ha altre strutture come Parallel.For , che consente di elaborare un ciclo contemporaneamente, utilizzando più thread. Tutte queste cose potrebbero essere implementate in C ++ come funzioni di libreria. Infatti, una tale libreria ha già stata scritta .

Per quanto ne so, la PPL (Parallel Patterns Library per Microsoft C ++) non dipende da nessuna caratteristica linguistica speciale.

    
risposta data 16.05.2013 - 18:31
fonte
0

Ci sono state librerie di thread-via-blocks per secoli in cpp. Esistono i thread building block di Intel che sono abbastanza buoni, e poi ci sono cose simili come OpenMP che ti permette di astrarre il threading in un modo" lascia che il sistema lo faccia per te "(questo è supportato da VC ++, devi impostare il flag / openmp nei tuoi build)

Microsoft sta lavorando anche su Casablanca , che potrebbe non essere una libreria di compiti veramente generica, ma è un framework per la scrittura di attività basate su attività sistemi (principalmente per applicazioni web) usando qualcosa di simile a il modello di attore di Erlang

    
risposta data 16.05.2013 - 19:28
fonte

Leggi altre domande sui tag