Funkcja pthread_create 3 c

Funkcja pthread_create 3 c
„Wewnątrz procesu wątek to mały przepływ kanału. Ponieważ dzielą wiele właściwości procesów, wątki są często uważane za lekkie operacje. Ponieważ wątki, z wyjątkiem procesów, nie są całkowicie samodzielne, udostępniają swoje skrypty, dane i funkcje systemu operacyjnego, takie jak otwarte pliki i sygnały z innymi wątkami. Jednak wątek, podobnie jak zadanie, ma swój licznik programowy (PC), ustawienie rejestru i pamięć stosu. Na przykład kilka sesji w przeglądarce może reprezentować wyraźne wątki."

MS Word używa wielu wątków, jednego do formatowania tekstowego, drugiego do przetwarzania danych wejściowych i tak dalej. W tym artykule poinformujemy Cię o użyciu funkcji pthread_create 3 C do utworzenia wątku za pomocą systemu Kali Linux. Zacznijmy teraz w skorupce Kali Linux. Musimy utworzyć nowy plik C, w którym będziemy tworzyć program C dla wątków. Możemy więc używać instrukcji dotyku, aby utworzyć tytuł „Utwórz wątek” i „.C ”rozszerzenie na końcu. Plik został pomyślnie utworzony zgodnie z listą instrukcji „LS” i pokazuje zawartość bieżącego katalogu roboczego.

Aby otworzyć ten plik w edytorze VIM w celu utworzenia kodu, użyliśmy instrukcji „VIM”, jak pokazano poniżej. Polecenie musi zawierać pełną nazwę pliku wraz ze słowem kluczowym „vim”. Pusta edytor VIM pomyślnie otworzy Twój plik C.

Przykład 01

Czas stworzyć przykład funkcji pthread_create, aby stworzyć nowy wątek w skrypcie C. W tym celu zaczniemy nasz kod C od głównych standardowych bibliotek zawartych w słowie kluczowym „#Include”. Do standardowego przepływu wejściowego i wyjściowego w programie potrzebujemy „stdio.Biblioteka H ”wraz z„ stdlib.h ”i„ unistd.H ”Biblioteka.

Oprócz tego używamy „pThread.H ”Biblioteka C do korzystania z funkcji wątków w naszym kodzie C. Bez tej biblioteki użycie funkcji PTHREAD może powodować błędy. Zainicjowaliśmy globalną zmienną „globalną” i przypisaliśmy jej wartość „0” na początku kodu po nagłówkach. Ta zmienna zostanie wykorzystana w pozostałej części kodu.

Zacznijmy od wyjaśnienia tego kodu z funkcją main () tego kodu. Główny wątek deklaruje zmienną „VAR” i „Threadid” dla wątku za pomocą słowa kluczowego „pthread_t.„Pętla„ dla ”5 iteracji została użyta do utworzenia wątku 5 razy za pomocą funkcji„ pthread_create ”. Przekazaliśmy ją zmienną „wątku”, aby policzyć numer wątku i przekazywać w niej funkcję wątku „Func” z tym samym wskaźnikiem zmiennej „Threadid”.

Po utworzeniu 5 wątków za pomocą pętli „for” będziemy poza pętlą, a funkcja „pthread_exit” zostanie użyta do wyjścia z wykonania wątku i zakończenia programu. Teraz spójrzmy na funkcję wskaźnika wątku „FUNC”, biorąc wątek „id” z metody main (), aby odpowiednio tytułować się. Argument „ID” przekazany przez Main () zostałby zapisany do wskaźnika „Threadid” typu liczb całkowitych. Statyczna zmienna liczb całkowita „VAR” jest inicjowana do 0, a my podnosimy wartość zmiennych „var” i „globalny."

Z powodu po wprowadzeniu wartość byłaby najpierw zwiększona, i.mi., „Id”, a następnie zapisany na zmiennej. Instrukcja printf jest tutaj, aby wyświetlić identyfikator wątku, wartość zmienną statyczną i wartość zmiennej globalnej. Wartości dla wątków wynosiłyby 2, 4, 6, 8 i 10. Po prostu zapiszmy nasz kod i zobaczmy, co stanie się po kompilacji.

Po pierwsze, będziemy skompilować ten kod C z kompilatorem „GCC” wraz z poleceniem „-LPTHREAD” dla funkcji wątku Linux zawierającego opcję „-O” do utworzenia pliku wykonania „CreateThread.Out ”, jak pokazano poniżej. Plik został skompilowany i utworzony pomyślnie.

Uruchommy skompilowany plik wykonania bezbłędnie z „./”Polecenie, jak pokazano poniżej. Wyjścia 5 wątków wyświetlają identyfikator wątku, wartość zmienną statyczną i wartość zmiennej globalnej przy przyrostu 2.

Przykład 02

W tym przykładzie będziemy używać tego samego formatu kodu. Zaczynając od metody Main (), utworzyliśmy dwie zmienne liczb całkowitych i zmienną „Thread_id” z słowem kluczowym „pthread_t”. Zmienna „Threadid” przyjmuje informacje o metodzie main () za pomocą funkcji „pthread_self ()” i przekazywana jej do funkcji „FUNC”, która została użyta do utworzenia nowego wątku za pomocą funkcji „pthread_create ()”. Cokolwiek nowo utworzony wątek powróci, zostanie zapisane do zmiennej „CrerereTurn” i sprawdzone w instrukcji „If”. Jeśli wystąpi jakiś błąd, użyje instrukcji PrintF, aby to wyświetlić, a program zostanie zakończony. W przeciwnym razie, po utworzeniu wątku, program śpi przez 1 sekundę i używa instrukcji printf, aby wyświetlić to, że wątek został pomyślnie utworzony.

Następnie program zostanie zakończony. Funkcja wątku func () wyświetli informacje o wątku za pomocą funkcji pthread_self () i danych funkcji main () przekazywanej przez argument, jak pokazano za pomocą funkcji printF.

Opracowaliśmy ten plik i utworzyliśmy plik kodu źródłowego wykonania z instrukcją „GCC”.

Po wykonaniu mamy również identyfikator informacji funkcji func () i wątku main ().

Za każdym razem wykonywanie tego programu generuje różne dane dla obu wątków.

Wniosek

Wątki są powszechnym podejściem do promowania synchroniczności w aplikacjach. Wątki działają szybciej niż zadania dla szeregu czynników, i.mi., Generowanie wątków jest znacznie szybsze, przełączanie kontekstowe między wątkami wydaje się znacznie szybsze, zakończenie wątków jest o wiele łatwiejsze, a interakcja wątków jest znacznie szybsza. W tym artykule omówiliśmy użycie funkcji pthread_create wraz z innymi funkcjami wątków, aby to wyświetlić. Mamy nadzieję, że ci się spodoba.