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.