SEM_GETVALUE 3 C

SEM_GETVALUE 3 C

La fonction SEM_GETVALUE () obtient la valeur du sémaphore. Il obtient la valeur que ce soit un sémaphore nommé ou un sémaphore sans nom. Dans le cas de la valeur zéro du sémaphore, il renvoie une valeur négative. Lorsque certains threads attendent le sémaphore, il renvoie une valeur négative. La valeur absolue de ce type d'entier négatif représente le nombre de threads en attente de sémaphore. La fonction "SEM_GETVALUE ()" est définie dans le "Semaphore. Fichier d'en-tête h ”. Nous allons passer par cette fonction «sem_getvalue ()» dans ce guide et démontrerons les exemples où nous utilisons cette fonction «SEM_GETVALUE ()» pour vous fournir une bonne compréhension de ce concept.

Syntaxe:

# int SEM_GETVALUE (SEM_T * SEM, INT * VALUE);

Exemple 1:

Les exemples de ce guide fonctionneront avec Ubuntu 20.04. Pour exécuter ces exemples sur Ubuntu 20.04, le compilateur GCC doit être installé. Un petit peu du code C est généré lorsque GCC est installé pour montrer comment utiliser la fonction «SEM_GETVALUE ()» dans la programmation C. Quelques fichiers d'en-tête sont utilisés au début du code. Nous avons le «stdio. Fichier d'en-tête H ”comme suit, qui est le fichier d'en-tête d'entrée / sortie par défaut. Nous devons ajouter ce fichier d'en-tête lorsque nous écrivons le code C.

Après cela, nous avons mis le «sémaphore. Fichier d'en-tête h ”. Nous incluons ce fichier d'en-tête afin que nous puissions utiliser la fonction «SEM_GETVALUE ()» telle qu'elle est définie dans ce fichier d'en-tête. Ensuite, nous avons mis la fonction «main ()» ici. Nous utilisons le type de données «int» avec cette fonction «main ()». Nous avons également le "SEM_T" avec le nom "My_sem". Ici, «my_sem» est déclaré et le «num» du type de données «int» est également déclaré. En dessous, nous utilisons la fonction "sem_init ()". Ce "SEM_INIT" contient trois paramètres. Le premier paramètre est le «& my_sem» qui initialise le sémaphore. Le deuxième paramètre indique comment ce sémaphore est utilisé ou partagé.

Ici, nous mettons «0» comme deuxième paramètre, ce qui signifie que c'est le seul thread exécuté dans le processus existant qui va utiliser ce sémaphore. Le troisième paramètre décrit la valeur préliminaire du sémaphore. Ici, nous avons mis la valeur initiale de ce sémaphore comme «10». Après cela, nous avons la fonction «SEM_GETVALUE ()» qui obtient la valeur préliminaire du sémaphore. Nous passons les deux paramètres comme «& my_sem» et «& num». Le numéro du sémaphore est obtenu de cette manière. Maintenant, nous imprimons ce numéro sur l'écran du terminal en tapant l'instruction «printf». Les données écrites ici sont rendues à l'écran.

Nous avons deux commandes pour obtenir la sortie de ce code. Nous devons mettre le «-lpthread» et «-lrt» avec la première instruction et appuyez sur Entrée. Après une compilation réussie, nous exécutons la deuxième commande et rendons la sortie. Vous pouvez voir dans cette sortie qu'il affiche la valeur initiale du sémaphore.

Exemple n ° 2:

Nous avons deux fichiers d'en-tête ici, «STdio. H »et« Sémaphore. h ”, dont nous avons déjà discuté dans notre code précédent. Nous avons le «int main ()». En dessous, il y a le "SEM T" nommé "My_sem" et "New_sem". Dans ce cas, «my_sem» et «new_sem» sont déclarés et le «num» et la «valeur» sont également déclarés comme le type de données «int». Nous avons également la fonction «SEM_INIT ()» et passons les trois paramètres.

Ensuite, nous utilisons la fonction «SEM_GETVALUE ()» pour obtenir la valeur initiale que nous avons passé comme troisième paramètre de la fonction «SEM_INIT» et imprimez cette valeur à l'écran à l'aide de la future «printf». En dessous, nous utilisons à nouveau la fonction «SEM_INIT ()» de la même manière que nous avons utilisé la fonction précédente. Ensuite, nous obtenons la valeur initiale à l'aide de la fonction «SEM_GETVALUE ()» et l'imprimez.

Ici, nous avons deux lignes différentes sur la sortie. Tout d'abord, nous obtenons la valeur du premier sémaphore et l'avons affiché, puis obtenons la valeur initiale du deuxième sémaphore et l'imprimez sur l'écran de sortie.

Exemple # 3:

Nous mettons un peu le code précédent ici. Le code est identique à celui que nous avons développé plus tôt. Nous plaçons les deux fichiers d'en-tête - «STdio. h ”et« sémaphore. h ”- qui sont essentiels pour ce code et utilisent la fonction« int main () ». En dessous de cette fonction principale, nous déclarons le sémaphore et la valeur qui est le type de données «int». Ensuite, nous initialisons le sémaphore à l'aide du «SEM_INIT» et passons les paramètres de cette fonction. Ensuite, nous obtenons la valeur initiale de ce sémaphore à l'aide de la fonction «SEM_GETVALUE ()». Puis imprimez-le de la même manière que nous avons décrit précédemment.

Ici, nous ajoutons une nouvelle fonction qui est la fonction "SEM_WAIT ()". Nous utilisons cette fonction pour verrouiller le sémaphore. Ensuite, nous utilisons à nouveau cette fonction «SEM_GETVALUE ()». Vous verrez dans la sortie comment il obtient la valeur initiale après la fonction "SEM_WAIT ()". Nous imprimons également cette valeur en utilisant la fonction «printf ()».

Dans cette capture d'écran, vous pouvez voir que la première valeur initiale du sémaphore est «10» mais après la fonction «SEM_WAIT ()», il obtient la valeur qui est «9». Il imprime la valeur «9» après la fonction «SEM_WAIT ()».

Conclusion

Nous avons fourni ce guide pour expliquer en détail la fonction «SEM_GETVALUE ()». Le but, les codes et les résultats de la fonction «SEM_GETVALUE ()» ont été abordés dans ce guide. Ce guide a déjà discuté de la fonction C "SEM_GETVALUE ()". Nous avons discuté que la fonction «SEM_GETVALUE ()» en C est utilisée pour obtenir la valeur du sémaphore. Nous avons traversé les trois exemples différents. La sortie de chaque exemple ainsi que le code source C sont nécessaires pour utiliser la fonction "SEM_GETVALUE ()". Après avoir soigneusement lu ce guide et exécuté ces codes par vous-même, nous sommes certains que vous comprendrez ce concept facilement.