Std Future C ++

Std Future C ++

Oggi impareremo uno dei file di intestazione importanti del linguaggio di programmazione C ++ che è la libreria "futura". Per evitare la confusione quando apprendono il concetto del file di intestazione futuro, esaminiamo brevemente la lingua C ++ prima di passare all'argomento principale. Verrà anche discusso il significato dei file di intestazione e la giustificazione dietro il loro utilizzo nel linguaggio di codifica C ++.

La lingua di codifica C è il predecessore di C++. Inoltre, potremmo affermare che si tratta di una forma migliorata di C fondata sul principio della programmazione orientata agli oggetti (OOP). Quando si scrive un programma nel linguaggio di programmazione C ++, utilizziamo file di intestazione standard, classi, funzioni, ecc. Questi ci salvano dal dover scrivere numerose righe di codice. Utilizzando alcune parole chiave di riserva, aggiungiamo semplicemente il file di intestazione.

introduzione

Nei programmi C ++, dobbiamo includere almeno una libreria che è la maggior parte dei programmi C ++ che richiedono i metodi CIN () e Cout () in modo da accettare i dati dall'utente e molti altri codici pre-scritti che rendono il codice più leggibile. Per accedere a queste funzioni, è necessario disporre di un file di intestazione. La libreria "futura" viene utilizzata per creare modelli di classe e modelli associati che rendono più facile eseguire un metodo che potrebbe essere stato in un thread diverso e recuperare i suoi risultati. Il risultato è il numero che il metodo restituisce o un'eccezione che il metodo genera ma non cattura.

Per comprendere meglio il futuro approccio al file di intestazione, esaminiamo il pacchetto futuro per vedere come questa libreria viene utilizzata e implementata nel linguaggio di programmazione C ++, oltre a ciò che sono le funzioni associate del modulo futuro.

Sintassi:

Ecco come dovrebbe essere scritto il file di intestazione di un programma C ++ utilizzando il tag "#include futuro>". Iniziamo ora a comprendere lo stile di implementazione e scrittura della futura biblioteca. La direttiva preprocessore "#include" del linguaggio di programmazione C ++ è scritta nel modo seguente. Riferendosi a loro come istruzioni preprocessore, il preprocessore esamina il programma per direttive specifiche che può comprendere. Ogni direttiva preprocessore inizia con il simbolo # (hash).

Il preprocessore esegue innanzitutto azioni preliminari come implicitamente l'esecuzione del codice, compresi i file relativi al programma, ecc. Prima che il traduttore incontri anche il programma. Un futuro è una rappresentazione dei risultati di un'operazione asincrona che non potrebbe ancora essere accessibile. Una volta terminati i calcoli, il futuro può contenere un valore o può mostrare un errore.

Esempio:

Per comprendere il concetto di futuri file di intestazione, implementeremo le biblioteche future e discuteremo anche alcune altre biblioteche e funzioni che useremo. Ora creeremo un esempio del file di intestazione futuro nel linguaggio di programmazione C ++.

Per fare ciò, usiamo prima una versione C ++ 11 o sopra del compilatore che supporta la Biblioteca futura. La biblioteca futura non funzionerà correttamente sul compilatore online se non si dispone del compilatore C ++ 11 o superiore, quindi è necessario installarlo. Inizia a scrivere il programma di esempio che desideriamo implementare dopo l'installazione e l'avvio del compilatore. Per garantire che le azioni del programma, che significano classi, oggetti, funzioni, ecc.

I metodi che abbiamo implementato nel programma non avrebbero funzionato senza i file di intestazione. WWE non avrebbe nemmeno visto il risultato sul pannello dell'utente. Quando includeremo qualsiasi file di intestazione, scriviamo per la prima volta il simbolo "#" che dice al compilatore che stiamo aggiungendo la libreria al programma esistente. Il nome del file di intestazione che desideriamo aggiungere al programma verrà scritto dopo la parola chiave C ++ riservata "Include", che viene utilizzata per includere il file di intestazione e, successivamente, scriveremo il nome della libreria "iostream".

Iostream significa che possiamo ottenere l'input dall'utente utilizzando il metodo CIN () e possiamo anche visualizzare i risultati utilizzando il metodo Cout (). Quindi, aggiungerà un altro file di intestazione che è "#include nel programma perché il file di intestazione thread contiene definizioni per le classi thread che implementeremo nella funzione principale () e nelle funzionalità associate.

Nel linguaggio di programmazione C ++, un singolo thread è rappresentato dalla classe thread utilizzando std :: thread. Ora includeremo un'altra intestazione che è "#Include Library. Possiamo usare questa libreria per molteplici scopi del programma come quando vogliamo supportare il threading nel programma e attende anche una funzione asincrona predeterminata che esegue la funzione in modo asincrono e dà il futuro del valore della funzione.

#includere
#includere
#includere
Utilizzo dello spazio dei nomi std;

Inoltre, aggiungeremo un'altra affermazione "Utilizzo di Namespace Std", che viene utilizzato per specificare l'ambito del programma. Semplicemente detto, ci limita a dichiarare oggetti, metodi e argomenti nell'intero programma esistente con riferimenti allo stesso ambito.

Successivamente, implementeremo una funzione asincrona globale per ottenere l'ID del battistrada. Innanzitutto, scriveremo il tipo di ritorno della funzione che è un numero intero. Quindi, scriveremo il nome della funzione che abbiamo dichiarato ID "Asyncfunc". Quindi, tra le staffe di funzione, abbiamo superato il tipo di dati e la variabile. Nella funzione AsyncFunc (), abbiamo stampato l'ID del thread utilizzando il metodo Cout (). Nella riga 10, abbiamo restituito il valore al "valore" variabile che abbiamo dichiarato tra le staffe di funzione asincfun ().

int asyncfunc (valore int)

cout << "Asynchronous Thread: " << this_thread::get_id() << endl;
restituire "Il valore è:", valore + 200;

In termini di scrittura dei frammenti di codice per lo scenario che stiamo implementando, chiameremo quindi il metodo principale (). Il tipo di ritorno della funzione principale (), "int", verrà scritto per primo, seguito dal nome della funzione, che è la funzione principale (), quando si chiama la funzione. Quindi, inizia a creare il codice aprendo le staffe della funzione.

Nella riga successiva, stamperemo l'ID principale del battistrada scrivendo "this_thread :: get_id ()" e passandolo nel metodo Cout (). Successivamente, creeremo la classe futura scrivendo la parola chiave riservata "futuro" e passando il tipo di intero e il nome della classe è "FUT". Successivamente, la funzione Asyncfunc () restituisce l'oggetto futuro. Quindi abbiamo usato l'istruzione IF per verificare se il futuro "FUT" è valido e se la condizione è valida, stamperemo l'oggetto futuro utilizzando il metodo Cout (). Quindi abbiamo usato l'istruzione if-else per verificare la validità del futuro. Se è valido, compilerà il "FUT.Get () "e se non lo è, stamperà il messaggio" non valido.

int main ()

cout <<"Main Thread: "<< this_thread::get_id() << endl;
Future FUT = Async (Launch :: Async, Asyncfunc, 400);
if (fut.valido())

cout << fut.get()<
if (fut.valido())

Fut.Ottenere();

altro

cout<<"Invalid" <
restituzione 0;

Per informare il compilatore per interrompere l'esecuzione del programma e visualizzare l'output sullo schermo, nonché per mostrare la schermata di errore se ce ne sono, restituiremo 0 al metodo principale () alla fine del programma.

Ecco l'output del programma sopra composto:

Conclusione

In questo articolo, abbiamo appreso del futuro file di intestazione. Abbiamo imparato perché utilizziamo i file di intestazione futuri e come li implementeremo imparando la sintassi del futuro. Abbiamo implementato un esempio del futuro con una spiegazione dettagliata di ogni riga di codice in modo che la confusione venga lasciata nelle menti degli utenti.