Wątek POSIX z programowaniem C

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

Wątek POSIX:

Na platformach Linux języki C i C ++ PTHREAD API dla wszystkich rodzajów funkcji związanych z wątkiem. Jest również znany jako wątek POSIX, który pozwala użytkownikom tworzyć wiele wątków dla jednoczesnych procesów. Najlepiej go używać w systemach lub procesorach wielordzeniowych do wdrażania wątków na jądrze, aby osiągnąć system.

Realizacja:

Konieczne jest włączenie tego pthread.H plik nagłówka w skrypcie początkowo. Pomoże to w korzystaniu z funkcji biblioteki pthreads. Aby wykonać plik C, następujące polecenia

$ cc -pthread plik.C

LUB

$ cc -lpthread plik.C

Funkcje zdefiniowane w bibliotece PTHREADS mogą obejmować:

pthread_create:

Służy do tworzenia nowego wątku

Parametry pthread_create:

Ma następujące parametry:

nitka: Działa to jako wskaźnik do wartości całkowitej. Zwraca identyfikator wątku utworzonego wątku.

Atrybuty: Ten parametr działa jako wskaźnik do struktury. Służy do definiowania atrybutów wątku, który może być zasadą planowania i adresu stosu itp.

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

argument: Ten parametr jest wskaźnikiem do zniesienia z różnymi argumentami niż funkcja wstępnie zdefiniowana 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 parametrów, który jest obowiązkowym wskaźnikiem liczby całkowitej. Przechowuje status wątku, tak że wątek kończy się. To musi być zmienna globalna. Umożliwi to następny wątek w wierszu 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 momencie oczekiwania na zakończenie wątku.

Parametry dla pthread_join:

Używany tutaj parametr to:

Thread_id: Jest to identyfikator wątku, na który wątek w linii czeka.

Thread_return: 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 Thread_Identification, void ** Thread_return);

pthread_self:

Jest to metoda stosowana do uzyskania obecnie identyfikatora wątku.

Składnia:

>> pthread_t pthread_self (void);

pthread_equal:

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

Składnia:

>> int pthread_equal (pthread_t Thread1, pthread_t Thread2);

pthread_Cancel:

Ta metoda służy do wysyłania żądania do anulowania

Parametr dla pthread_cancel:

Zastosowany parametr jest obowiązkowy do wprowadzenia w celu anulowania żądania.

Składnia:

>> int pthread_cancel (pthread_t ThreadName);

pthread_detach:

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

Parametr pthread_detachr:

Jest to parametr, który akceptuje obowiązkowy identyfikator wątków parametrów. Należy je odłączyć.

Składnia:

>> int pthread_detach (pthread_t Wątek);

Przykładowy kod:

Oto przykładowy kod pokazujący implementację wyżej opisanej funkcji. Użyliśmy kompilatora GCC do opracowania tych funkcji.

// program pokazujący funkcje wątku
#włączać
#włączać
#włączać
// wywoływanie wątku POSIX, niezbędne w systemach UNIX/LINUX
pthread_t tid [2];
void *funkcja (void *arg)

niepodpisany długi i = 0;
pthread_t id = pthread_self ();
if (pthread_equal (id, tid [0]))
// Warunek dla wątków jest równy

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

w przeciwnym razie

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

// wątki przetwarzane.
dla (i = 0; i<(0x255);i++);
powrót NULL;

int Main (void)

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

error = pthread_create (& (tid [i]), null i funkcja, null);
if (błąd != 0)
printf („\ n nie był w stanie utworzyć wątku: [%s]”, strerror (błąd));
w przeciwnym razie
printf („\ n Wątek został pomyślnie utworzony \ n”);
// wątek utworzony pomyślnie
i ++;

sen (5);
powrót 0;

Kod jest napisany w edytorze tekstu; Możesz użyć dowolnego edytora w oparciu o swój wybór. Następnie zapisz go w swojej ulubionej lokalizacji.

Plik jest zapisywany w systemie komputerowym, a następnie dostęp do. Plik zapisany przez USA został nazwany testem.C. Aby uzyskać do niego dostęp, wpisz następujące polecenie w oknie terminalu:

Test $ sudo gcc.c -LpThread

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

$ ./A.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ątków i omówił wszystkie powszechnie stosowane metody w jego tworzeniu. Wątek jest przykładem procesu. Następnie przechodziliśmy użytkowników przez słynne parametry używane przez każdy proces wraz z składniami, aby mogli korzystać z nich w programach komputerowych. Tutaj udostępniliśmy również przykładowy kod jako próbkę, aby lepiej zrozumieć pomysł utworzenia programu C w POSIX. Kompilator, którego użyliśmy, był GCC w systemie Linux. Użytkownicy mogą również zdecydować się na dowolny inny kompilator na podstawie ich preferencji.