Funkcja sem_post 3 c

Funkcja sem_post 3 c
Metoda „sem_post ()” wykonuje operację odblokowania semaforu na semafor. Żadne wątki nie powstrzymały się, czekając na odblokowanie semafora. Zamiast tego wartość semaforu jest po prostu zwiększona, jeśli wartość semaforu uzyskana z tego działania jest dodatnia. Funkcja „sem_post ()” podnosi (odblokowuje) semafor wskazany. Wartość semaforu jest zwiększana o jeden, gdy post jest wykonany za pomocą metody sem_post (). Użyjemy tej funkcji „sem_post ()” tutaj w naszym programowaniu C i pokaże, w jaki sposób funkcja „sem_post ()” zwiększy wartość semaforu według jednego w tym przewodniku.

Składnia:

Składnia tej funkcji „sem_post ()” w programowaniu C podano poniżej:

int sem_post (sem_t *sem);

Przykład 1:

Przykłady w tym przewodniku są kompatybilne z Ubuntu 20.04. Kompilator GCC musi zostać zainstalowany dla Ubuntu 20.04 Aby wykonać te przykłady. Po zainstalowaniu GCC powstanie niewielka część kodu C, aby pokazać, jak użyć funkcji „sem_post ()” w programowaniu C. Kilka plików nagłówka jest używanych na początku kodu. Domyślny plik nagłówka wejściowego/wyjściowego to „stdio. h ”i jest dostępny w następujący sposób. Podczas piszem kodu C musimy dołączyć ten plik nagłówka. „Semafor. Następnie dodaje się plik nagłówka H ”. Aby użyć funkcji „sem_post ()”, która jest zdefiniowana w tym pliku nagłówka, dołączyliśmy ją.

Następnie funkcja „main ()” jest tutaj umieszczana. Dzięki tej funkcji „main ()” wykorzystywany jest typ danych „int”. Dodatkowo istnieje „sem_t” z nazwą „my_sem”. W takim przypadku „My SEM” jest zadeklarowane wraz z „num” typu danych „int”. Używamy poniższego kodu „SEM init ()”. Istnieją trzy argumenty w tym „sem_init.„Tutaj parametr„ & my_sem ”inicjuje semafor jako pierwszy parametr. Druga opcja określa, jak udostępniać lub korzystać z tego semafora. Drugi argument w tym przypadku jest ustawiony na „0”, co wskazuje, że ten semafor będzie używany tylko przez wątki, które obecnie działają.

Wartość początkowa semaforu jest opisana przez trzeci parametr. Tutaj „20” jest wprowadzane jako wartość początkowa Semaphore. Następnie umieszczamy tutaj funkcję „sem_post ()” i przekazujemy „& my_sem” jako jej parametr. Metoda „SEM getValue ()” zostanie następnie użyta do pobrania wartości początkowej semafory. Tutaj przekazywane są parametry „& My Sem” i „& Num”. Zwróci to numer Semaphore po wykonaniu funkcji „sem_post ()”. Jego początkowa wartość zostanie zwiększona o jeden.

Teraz, wprowadzając instrukcję „PrintF” w tej lokalizacji, drukujemy ten numer po wykonaniu funkcji „sem_post ()” na ekranie terminalu. Wprowadzone informacje pojawią się na ekranie.

Aby uzyskać wyjście tego kodu, mamy dwie instrukcje. Pierwsze polecenie musi zawierać „-lpthread” i „-lrt”, zanim będziemy mogli nacisnąć Enter. Wykonujemy drugie polecenie po udanej kompilacji tego kodu C. Następnie wyświetlane jest wyjście. Z tego wyjścia widać, że pokazuje wartość semaforową po funkcji „sem_post ()”.

Przykład nr 2:

Rozpoczynamy następny przykład, umieszczając pliki nagłówków „stdio. H ”i„ Semafor. H". Musimy dodać te pliki nagłówka dla tego kodu. Teraz używamy funkcji „int main ()”. Mamy semafor o nazwie „New_Sem” i deklarujemy „liczbę” jako typ danych „int”. Umieszczamy funkcję „sem_init ()” i podajemy trzy parametry, które są do tego niezbędne. Wartość początkowa tego semaforu jako „20”, a następnie wykorzystujemy funkcję „sem_post ()”, która zwiększy jej wartość początkową o jeden.

Następnie umieść funkcję „sem_getValue ()” i przejdź dwa parametry tej funkcji i użyj „printf” poniżej. Tak więc wyświetli przyrostową wartość na ekranie. Ponownie umieszczamy kolejną funkcję „sem_post ()” i umieszczamy tę samą semafor w tej drugiej funkcji „sem_post ()”. Następnie ponownie użyj „sem_getValue ()”, o którym już omówiliśmy w naszym poprzednim przykładzie. „Printf” jest wykorzystywane do drukowania wartości po tej drugiej funkcji „sem_post ()”.

Po pierwsze, drukuje wartość semafora jako „21”, ponieważ podajemy początkową wartość semaforu jako „20”. Po funkcji „sem_post ()” jej wartości zwiększają się i wyświetla „21”. W drugim wierszu wartość semaforu wynosi „22”, ponieważ ponownie umieszczamy funkcję „sem_post ()”.

Przykład nr 3:

Nieco aktualizujemy wspomniany wcześniej kod. Kod jest taki sam jak ten, który ustanowiliśmy wcześniej. Umieszczamy dwa pliki nagłówka „stdio. H ”i„ Semafor. h ”, który jest niezbędny dla tego kodu. Korzystamy również z funkcji „int main ()” i deklarujemy semafor i wartość, typ danych „int”, pod tą główną funkcją. Po użyciu „SEM INIT” w celu ustalenia semafora i uchwaleniu jego argumentów, używamy metody „SEM getValue ()” do odzyskania wartości początkowej semaforu. Następnie wydrukuj go tak, jak już wyjaśniliśmy. Funkcja „sem_post ()” to nowa, którą tutaj dodajemy. Ta funkcja służy do zwiększenia wartości semaforu. Wynik pokaże, w jaki sposób funkcja „sem_post ()” zwiększa wartość początkową tego semaforu. Następnie ponownie używamy funkcji „sem_getValue ()” i używamy „printf ()”, również drukujemy tę wartość.

W tym wyjściu początkowa wartość semaforu jest wyświetlana najpierw, a następnie wartość po wyświetlaniu funkcji „sem_post ()”. Możesz zauważyć, że zwiększa wartość początkową semafor.

Wniosek

Piszemy ten przewodnik, aby dowiedzieć się więcej o funkcji „sem_post ()”. Ten przewodnik obejmował kody funkcji „sem_post ()” i wyniki. Funkcja C „sem_post ()” została omówiona w tym przewodniku. Omówiliśmy, w jaki sposób funkcja „sem_post ()” zwiększa wartość semaforu w c. Podaliśmy tutaj trzy osobne przykłady. Podano kod źródłowy C niezbędny do użycia funkcji „sem_post ()” wraz z wyjściem dla każdego przykładu. Mamy nadzieję, że zrozumiesz to pojęcie po uważnym przeczytaniu tego przewodnika.