Std Future C ++

Std Future C ++

Dzisiaj dowiemy się o jednym z ważnych plików nagłówka języka programowania C ++, który jest biblioteką „przyszłych”. Aby uniknąć zamieszania podczas uczenia się pojęcia przyszłego pliku nagłówka, krótko przejrzyjmy język C ++, zanim przejdziemy do głównego tematu. Omówiono również znaczenie plików nagłówkowych i uzasadnienie ich użycia w języku kodowym C ++.

Język kodowania C jest poprzednikiem C++. Ponadto możemy stwierdzić, że jest to ulepszona forma C, która jest oparta na zasadzie programowania obiektowego (OOP). Podczas pisania programu w języku programowania C ++ używamy standardowych plików nagłówka, klas, funkcji itp. Oszczędzają nas przed koniecznością pisania licznych wierszy kodu. Korzystając z kilku słów kluczowych rezerwowych, po prostu dodajemy plik nagłówka.

Wstęp

W programach C ++ musimy dołączyć co najmniej jedną bibliotekę, która jest większością programów C ++, które wymagają metod CIN ( czytelny. Aby uzyskać dostęp do tych funkcji, musisz mieć plik nagłówka. Biblioteka „przyszłości” służy do tworzenia szablonów klas i powiązanych szablonów, które ułatwiają wykonywanie metody, która mogła być w innym wątku i pobierać wyniki. Rezultatem jest albo liczba, którą zwraca metoda, lub wyjątek generowany przez metodę, ale nie łapie.

Aby lepiej zrozumieć przyszłe podejście do pliku nagłówka, zbadajmy przyszły pakiet, aby zobaczyć, w jaki sposób ta biblioteka jest używana i wdrażana w języku programowania C ++, oprócz powiązanych funkcji przyszłego modułu.

Składnia:

W ten sposób należy zapisać plik nagłówka programu C ++ za pomocą znacznika „#include przyszłość>”. Zacznijmy teraz rozumieć styl implementacji i pisania przyszłej biblioteki. Dyrektywa preprocesora „#Include” języka programowania C ++ jest napisana w następujący sposób. Nazywając je instrukcjami preprocesor. Każda dyrektywa przedprocesorowa zaczyna się od symbolu # (Hash).

Preprocessor po raz pierwszy wykonuje wstępne działania, takie jak domyślnie uruchamianie kodu, w tym pliki związane z programem itp. Zanim tłumacz jeszcze napotka program. Przyszłość jest reprezentacją wyników operacji asynchronicznej, która nie mogła być jeszcze dostępna. Po zakończeniu obliczeń przyszłość może zawierać wartość lub może pokazać błąd.

Przykład:

Aby zrozumieć koncepcję przyszłych plików nagłówków, zaimplementujemy przyszłe biblioteki, a także omówimy inne biblioteki i funkcje, których będziemy korzystać. Teraz utworzymy jeden przykład przyszłego pliku nagłówka w języku programowania C ++.

Aby to zrobić, najpierw używamy wersji C ++ 11 lub powyżej kompilatora, która obsługuje przyszłą bibliotekę. Przyszła biblioteka nie będzie działać poprawnie na kompilatorze online, jeśli nie masz kompilatora C ++ 11 lub wyżej, dlatego musisz ją zainstalować. Zacznij pisać przykładowy program, który chcemy wdrożyć po zainstalowaniu i uruchomieniu kompilatora. Aby zapewnić, że działania programu, które oznaczają klasy, obiekty, funkcje itp.

Metody, które wdrożyliśmy w programie, nie działałyby bez plików nagłówka. WWE nie widziałby nawet wyniku na panelu użytkowników. Kiedy dołączymy dowolny plik nagłówka, najpierw piszemy symbol „#”, który mówi kompilatorowi, że dodajemy bibliotekę do istniejącego programu. Nazwa pliku nagłówka, którą chcemy dodać do programu, zostanie zapisana po zarezerwowanym słowie kluczowym C ++ „Include”, które służy do dołączenia pliku nagłówka, a następnie napiszemy nazwę biblioteki „iostream”.

Iostream oznacza, że ​​możemy uzyskać dane wejściowe od użytkownika za pomocą metody CIN (), a także możemy wyświetlić wyniki za pomocą metody Cout (). Następnie doda kolejny plik nagłówka, który jest „#include w programie, ponieważ plik nagłówka wątków zawiera definicje klas wątków, które zaimplementujemy w funkcji Main () i powiązanych funkcjach.

W języku programowania C ++ pojedynczy wątek jest reprezentowany przez klasę wątków za pomocą STD :: Wątek. Teraz dołączymy jeszcze jeden nagłówek, którym jest „#Include Library. Możemy użyć tej biblioteki do wielu celów programu, tak jak w przypadku obsługi wątków w programie, a także czeka na asynchronicznie z góry określoną funkcję, która uruchamia funkcję asynchroniczną i daje przyszłość wartości funkcji.

#włączać
#włączać
#włączać
za pomocą przestrzeni nazw Std;

Ponadto dodamy jeszcze jedną instrukcję „Korzystanie z przestrzeni nazw”, która służy do określenia zakresu programu. Po prostu powiedział, że ogranicza nas do deklarowania obiektów, metod i argumentów w całym istniejącym programie z odniesieniami do tego samego zakresu.

Następnie wdrożymy globalną funkcję asynchroniczną, aby uzyskać identyfikator bieżnika. Najpierw napiszemy typ zwrotu funkcji, która jest liczbą całkowitą. Następnie napiszmy nazwę funkcji, którą zadeklarowaliśmy ID „AsynCFunc”. Następnie w nawiasach funkcyjnych przekazaliśmy danych i zmienną. W funkcji AsynCFunc () wydrukowaliśmy identyfikator wątku za pomocą metody cout (). W wierszu 10 zwróciliśmy wartość do zmiennej „wartość”, którą zadeklarowaliśmy w nawiasach funkcyjnych AsynCFun ().

int asyncFunc (wartość int)

Cout << "Asynchronous Thread: " << this_thread::get_id() << endl;
Zwraca „Wartość to:”, wartość + 200;

Jeśli chodzi o pisanie fragmentów kodu dla scenariusza, który wdrażamy, wywołamy metodę main (). Typ powrotu funkcji Main (), „int”, zostanie zapisany najpierw, a następnie nazwa funkcji, która jest funkcją main (), podczas wywoływania funkcji. Następnie zacznij tworzyć kod, otwierając wsporniki funkcji.

W następnym wierszu wydrukujemy główny identyfikator bieżnika, pisząc „this_thread :: get_id ()” i przekazując go do metody Cout (). Następnie utworzymy klasę przyszłej, pisząc zarezerwowane słowo kluczowe „przyszłość” i przekazując typ liczby całkowitej, a nazwa klasy to „FUT”. Następnie funkcja AsynCFunc () zwraca przyszły obiekt. Następnie użyliśmy instrukcji IF, aby sprawdzić, czy przyszłość „FUT” jest prawidłowa i czy warunek jest prawidłowy. Następnie użyliśmy instrukcji IF-ELSE, aby sprawdzić ważność przyszłości. Jeśli jest ważny, skompiluje „FUT.get () ”, a jeśli nie jest, wydrukuje wiadomość„ nieprawidłowe.

int main ()

Cout <<"Main Thread: "<< this_thread::get_id() << endl;
Future fut = async (uruchom :: async, asyncfunc, 400);
if (fut.ważny())

Cout << fut.get()<
if (fut.ważny())

fut.Dostawać();

w przeciwnym razie

Cout<<"Invalid" <
powrót 0;

Aby poinformować kompilator, aby zaprzestał uruchamiania programu i wyświetlanie danych wyjściowych na ekranie, a także pokazanie ekranu błędu, jeśli taki jest, zwrócimy 0 do metody Main () na końcu programu.

Oto dane wyjściowe wyżej skompilowanego programu:

Wniosek

W tym artykule dowiedzieliśmy się o przyszłym pliku nagłówka. Dowiedzieliśmy się, dlaczego używamy przyszłych plików nagłówków i jak będziemy je wdrożyć, ucząc się składni przyszłości. Wdrożyliśmy przykład przyszłości ze szczegółowym wyjaśnieniem każdej linii kodu, aby zamieszanie pozostało w umysłach użytkowników.