Funkcja sem_getvalue 3 c

Funkcja sem_getvalue 3 c

Funkcja sem_getValue () otrzymuje wartość semafora. Otrzymuje wartość albo jest wymienionym semaforem lub bezimiennym semaforem. W przypadku wartości zerowej semaforu zwraca wartość ujemną. Kiedy niektóre wątki czekają na semafor, zwraca wartość ujemną. Wartość bezwzględna tego rodzaju negatywnej liczby całkowitej reprezentuje liczbę wątków oczekujących na semafor. Funkcja „sem_getValue ()” jest zdefiniowana w „semaforze. H ”plik nagłówka. W tym przewodniku przejdziemy przez tę funkcję „sem_getValue ()” i zademonstrujemy przykłady, w których korzystamy z tej funkcji „sem_getValue ()”, aby zapewnić dobre zrozumienie tej koncepcji.

Składnia:

# int sem_getValue (sem_t * sem, int * wartość);

Przykład 1:

Przykłady tego przewodnika będą działać z Ubuntu 20.04. Aby uruchomić te przykłady na Ubuntu 20.04, kompilator GCC musi zostać zainstalowany. Niewielki kawałek kodu C jest generowany po zainstalowaniu GCC, aby pokazać, jak używać funkcji „sem_getValue ()” w programowaniu C. Kilka plików nagłówka jest używanych na początku kodu. Mamy „stdio. H ”plik nagłówka w następujący sposób, który jest domyślnym plikiem nagłówka wejściowego/wyjściowego. Musimy dodać ten plik nagłówka, gdy piszemy kod C.

Po tym umieściliśmy „Semafor. H ”plik nagłówka. Uwzględniamy ten plik nagłówka, abyśmy mogli użyć funkcji „sem_getValue ()”, ponieważ jest on zdefiniowany w tym pliku nagłówka. Następnie umieszczamy tutaj funkcję „Main ()”. Używamy typu danych „int” z tą funkcją „main ()”. Mamy również „sem_t” z nazwą „my_sem”. Tutaj „my_sem” jest zadeklarowane, a „num” typu danych „int” jest również zadeklarowane. Poniżej używamy funkcji „sem_init ()”. Ten „sem_init” zawiera trzy parametry. Pierwszym parametrem jest „& my_sem”, który inicjuje semafor. Drugi parametr wskazuje, w jaki sposób ten semafor jest używany lub udostępniany.

Tutaj umieściliśmy „0” jako drugi parametr, co oznacza, że ​​jest to jedyny wątek działający w istniejącym procesie, który będzie korzystał. Trzeci parametr opisuje wstępną wartość semaforu. Tutaj stawiamy początkową wartość tego semafora jako „10”. Następnie mamy funkcję „sem_getValue ()”, która otrzymuje wstępną wartość semaforu. Przedstawiamy dwa parametry jako „& my_sem” i „& num”. Numer Semaphore jest uzyskiwany w ten sposób. Teraz drukujemy ten numer na ekranie terminalu, wpisując instrukcję „printf”. Zapisane tutaj dane są renderowane na ekranie.

Mamy dwa polecenia, aby uzyskać dane wyjściowe tego kodu. Musimy umieścić „-lpthread” i „-lrt” z pierwszą instrukcją i naciśnij Enter. Po udanej kompilacji uruchamiamy drugie polecenie i renderujemy wyjście. W tym wyjściu widać, że wyświetla początkową wartość semaforu.

Przykład nr 2:

Mamy tutaj dwa pliki nagłówka: „Stdio. H ”i„ Semafor. h ”, o których już omówiliśmy w naszym poprzednim kodzie. Mamy „int main ()”. Poniżej znajduje się „sem t” o nazwie „my_sem” i „new_sem”. W takim przypadku „my_sem” i „new_sem” są zadeklarowane, a „num” i „wartość” są również zadeklarowane jako typ danych „int”. Mamy również funkcję „sem_init ()” i przekazujemy trzy parametry.

Następnie wykorzystujemy funkcję „sem_getValue ()”, aby uzyskać wartość początkową, którą przekazaliśmy jako trzeci parametr funkcji „SEM_INIT” i drukuje tę wartość na ekranie za pomocą „printf” fucntion. Below this, we again utilize the “sem_init()” function in the same way as we utilized the previous function. Następnie otrzymujemy wartość początkową za pomocą funkcji „sem_getValue ()” i drukuje.

Tutaj mamy dwie różne linie na wyjściu. Najpierw otrzymujemy wartość pierwszego semaforu i wyświetlamy ją, a następnie otrzymujemy początkową wartość drugiego semaforu i drukuje na ekranie wyjściowym.

Przykład nr 3:

Aktualizujemy trochę poprzedniego kodu tutaj. Kod jest identyczny z tym, który opracowaliśmy wcześniej. Umieszczamy dwa pliki nagłówka - „stdio. h ”i„ Semafor. H ” - które są niezbędne dla tego kodu i wykorzystują funkcję„ int main () ”. Poniżej tej głównej funkcji deklarujemy semafor i wartość, jaką jest typ danych „int”. Następnie inicjujemy semafor za pomocą „sem_init” i przekazujemy parametry tej funkcji. Następnie otrzymujemy wartość początkową tego semaforu za pomocą funkcji „sem_getValue ()”. Następnie wydrukuj go w taki sam sposób, jak opisaliśmy wcześniej.

Tutaj dodajemy nową funkcję, która jest funkcją „sem_wait ()”. Używamy tej funkcji do zablokowania semafora. Następnie ponownie wykorzystujemy tę funkcję „sem_getValue ()”. Na wyjściu zobaczysz, jak otrzymuje wartość początkową po funkcji „sem_wait ()”. Drukujemy również tę wartość za pomocą funkcji „printf ()”.

Na tym zrzucie ekranu widać, że pierwsza początkowa wartość semaforu to „10”, ale po funkcji „sem_wait ()” otrzymuje wartość „9”. Drukuje wartość „9” po funkcji „sem_wait ()”.

Wniosek

Dostarliśmy ten przewodnik, aby szczegółowo wyjaśnić funkcję „sem_getValue ()”. Cel, kody i wyniki funkcji „sem_getValue ()” zostały omówione w tym przewodniku. W tym przewodniku omówiono już funkcję C „sem_getValue ()”. Omówiliśmy, że funkcja „sem_getValue ()” w C jest używana do uzyskania wartości semaforu. Przeszliśmy trzy różne przykłady. Dostarczono dane wyjściowe każdego przykładu, a także kod źródłowy C, aby użyć funkcji „sem_getValue ()”. Po starannym przeczytaniu tego przewodnika i samodzielnym uruchomieniu tych kodów, jesteśmy pewni, że łatwo zrozumiesz tę koncepcję.