Programowanie C

Wątek POSIX z programowaniem C

Wątek POSIX z programowaniem C
Wątek to mała instancja działająca w ramach procesu. Wątki łączą się, tworząc proces i mają pewne właściwości procesu; dlatego są uważane za lekkie procesy. Wątek nie jest niezależny, tak jak proces. Raczej współpracują ze sobą, aby skompilować i stworzyć proces. Mimo to, podobnie jak proces, wątek ma również swój własny komputer PC (licznik programu) i określony zestaw rejestrów wraz z przestrzenią stosu.

Wątek POSIX:

Na platformach Linux standardowe API pthread w językach C i C++ dla wszelkiego rodzaju funkcji związanych z wątkami. Jest również znany jako wątek POSIX, który pozwala użytkownikom tworzyć wiele wątków dla jednoczesnego przepływu procesów. Najlepiej jest używać w systemach wielordzeniowych lub procesorach do implementacji wątków w jądrze w celu osiągnięcia systemu.

Realizacja:

Konieczne jest uwzględnienie tego pthread this.h plik nagłówkowy w skrypcie początkowo. Pomoże to w korzystaniu z funkcji biblioteki pthreads. Aby uruchomić plik c, wykonaj następujące polecenia

$ cc -pthread plik.do

LUB

$ cc -lpthread file.do

Funkcje zdefiniowane w bibliotece pthreads mogą obejmować:

pthread_create:

Służy do tworzenia nowego wątku

Parametry pthread_create:

Posiada następujące parametry:

wątek: Działa to jako wskaźnik do liczby całkowitej bez znaku. Zwraca identyfikator wątku tworzonego wątku.

atrybuty: Ten parametr działa jako wskaźnik do struktury. Służy do definiowania atrybutów wątku, które mogą być polityką planowania, adresem stosu itp.

procedura_startowa: Ten parametr jest wskaźnikiem do podprogramu zaimplementowanego przez wątek.

argument: Ten parametr jest wskaźnikiem do void z różnymi argumentami do funkcji wstępnie zdefiniowanej na początku argumentu

Składnia:

>> int pthread_create
(pthread_t * wątek, const pthread_attributes_t * attr, void * (*start_routine)(void *), void *argument);

pthread_exit:

Służy do zakończenia lub zakończenia wątku

Parametry pthread_exit:

Metoda zastosowana na końcu metody/procesu akceptuje retval parametru, który jest obowiązkowym wskaźnikiem liczby całkowitej. Przechowuje status wątku tak, że wątek się kończy. Musi to być zmienna globalna. Pozwoli to następnemu wątkowi w kolejce dołączyć do wątku, jeśli jest dostępny.

Składnia:

>> void pthread_exit(void *retval);

pthread_join:

Jest to funkcja używana w czasie oczekiwania na zakończenie wątku.

Parametry dla pthread_join:

Użyte tutaj parametry to:

identyfikator_wątku: Jest to identyfikator wątku, na który czeka wątek w kolejce.

zwrot_wątku: Jest to parametr, który działa jako wskaźnik do konkretnej lokalizacji, w której zdefiniowaliśmy status wyjścia.

Składnia:

>> int pthread_join(pthread_t identyfikacja_wątku, void **zwrot_wątku);

pthread_self:

Jest to metoda używana do uzyskania identyfikatora aktualnie ustawionego wątku.

Składnia:

>> pthread_t pthread_self(nieważne);

pthread_equal:

Ta metoda jest używana do porównania, czy dwa wątki są równoważne, czy nie. Jeśli dwa wątki są podobne, funkcja zwróci w odpowiedzi wartość inną niż zero zero.

Składnia:

>> int pthread_equal(pthread_t wątek1, pthread_t wątek2);

pthread_cancel:

Ta metoda służy do wysłania prośby o anulowanie

Parametr dla pthread_cancel:

Użyty parametr należy wprowadzić, aby anulować żądanie.

Składnia:

>> int pthread_cancel(pthread_t nazwawątku);

pthread_detach:

Jest to metoda używana do oddzielenia wątku. Nie wymaga żadnego wątku, aby dołączyć do zakończenia. Wszystkie zasoby działające w wątku są zwalniane, gdy tylko wątek zostanie odłączony.

Parametr pthread_detachr:

Jest to parametr, który akceptuje obowiązkowy parametr id wątku. Trzeba być odłączonym.

Składnia:

>> int pthread_detach(pthread_t wątek);

Przykładowy kod:

Oto przykładowy kod pokazujący implementację opisanej powyżej funkcji. Do skompilowania tych funkcji użyliśmy kompilatora gcc.

// Program do wyświetlania funkcji wątków
#zawierać
#zawierać
#zawierać
// Wywołanie wątku POSIX, niezbędne w systemach UNIX/LINUX
pthread_t tid[2];
void*Funkcja(nieważne *arg)

unsigned long i = 0;
pthread_t id = pthread_self();
if(pthread_equal(id,tid[0]))
// Warunek równości wątków

printf("\n Pierwszy wątek jest przetwarzany\n");

jeszcze

printf("\n Drugi wątek jest przetwarzany \n");

// Przetwarzane wątki.
dla(i=0; i<(0x255);i++);
zwróć NULL;

int główny (unieważniony)

int i = 0;
w terrorze;
// Tworzenie nowego wątku
podczas gdy ja < 2)

error = pthread_create(&(tid[i]), NULL, &Funkcja, NULL);
jeśli (błąd != 0)
printf("\n Nie można utworzyć wątku :[%s]", strerror(error));
jeszcze
printf("\n Wątek został pomyślnie utworzony\n");
// Wątek utworzony pomyślnie
i++;

sen(5);
zwróć 0;

Kod jest napisany w edytorze tekstu; możesz użyć dowolnego edytora na podstawie swojego wyboru. Następnie zapisz go w swojej ulubionej lokalizacji.

Plik jest zapisywany w systemie komputerowym, a następnie jest dostępny. Zapisany przez nas plik został nazwany test.do. Aby uzyskać do niego dostęp, wpisz następujące polecenie w oknie terminala:

$ sudo test gcc.c -lpthread

Następnie, aby wykonać dane wyjściowe, wpisz następujące polecenie:

$ ./za.na zewnątrz

Oczekiwany wynik:

Dane wyjściowe, które otrzymaliśmy w odpowiedzi na poprzedni kod, pokazano poniżej:

Wniosek:

Samouczek obejmował podstawowy proces tworzenia wątku i omówił wszystkie powszechnie stosowane metody jego tworzenia. Wątek jest instancją procesu. Następnie przeprowadziliśmy użytkowników przez słynne parametry używane przez każdy proces wraz ze składnią, aby mogli z nich korzystać w swoich programach komputerowych. Tutaj również udostępniliśmy przykładowy kod jako przykład, aby lepiej zrozumieć ideę tworzenia programu w C w POSIX. Wykorzystaliśmy kompilator gcc w systemie Linux. Użytkownicy mogą również wybrać dowolny inny kompilator w oparciu o ich preferencje.

How to change Mouse pointer and cursor size, color & scheme on Windows 10
The mouse pointer and cursor in Windows 10 are very important aspects of the operating system. This can be said for other operating systems as well, s...
Gry Darmowe i otwarte silniki gier do tworzenia gier na Linuksa
Darmowe i otwarte silniki gier do tworzenia gier na Linuksa
Ten artykuł zawiera listę darmowych i otwartych silników gier, których można używać do tworzenia gier 2D i 3D w systemie Linux. Istnieje wiele takich ...
Gry Samouczek Shadow of the Tomb Raider dla systemu Linux
Samouczek Shadow of the Tomb Raider dla systemu Linux
Shadow of the Tomb Raider to dwunasty dodatek do serii Tomb Raider - przygodowej serii gier akcji stworzonej przez Eidos Montreal. Gra została dość do...