SEM_POST 3 C Fonction

SEM_POST 3 C Fonction
La méthode "SEM_POST ()" effectue une opération de déverrouillage du sémaphore sur le sémaphore qui est référencé par SEM pour le déverrouiller. Aucun fil n'a été tenu en attendant que le sémaphore se déverrouille. Au lieu de cela, la valeur du sémaphore est simplement augmentée si la valeur de sémaphore obtenue à partir de cette action est positive. La fonction «SEM_POST ()» soulève (déverrouille) le sémaphore indiqué SEM. La valeur d'un sémaphore est augmentée de celle lorsqu'un post est réalisé en utilisant la méthode SEM_POST (). Nous utiliserons cette fonction «SEM_POST ()» ici dans notre programmation C et vous montrera comment la fonction «SEM_POST ()» augmentera la valeur du sémaphore par un dans ce guide.

Syntaxe:

La syntaxe de cette fonction «SEM_POST ()» dans la programmation C est donnée ci-dessous:

int SEM_POST (SEM_T * SEM);

Exemple 1:

Les exemples de ce guide sont compatibles avec Ubuntu 20.04. Le compilateur GCC doit être installé pour Ubuntu 20.04 pour exécuter ces exemples. Lorsque GCC est installé, une petite partie du code C sera créée pour montrer comment utiliser la fonction «SEM_POST ()» dans la programmation C. Quelques fichiers d'en-tête sont utilisés au début du code. Le fichier d'en-tête d'entrée / sortie par défaut est «STdio. h ”et est disponible comme suit. Lors de l'écriture du code C, nous devons inclure ce fichier d'en-tête. Le «sémaphore. Le fichier d'en-tête h ”est ensuite ajouté. Pour utiliser la fonction «SEM_POST ()», qui est définie dans ce fichier d'en-tête, nous l'avons inclus.

La fonction «main ()» est ensuite placée ici. Avec cette fonction «main ()», le type de données «int» est utilisé. De plus, il y a "SEM_T" avec le nom "My_sem". Dans ce cas, «mon SEM» est déclaré avec le «Num» du type de données «int». Nous utilisons le code «SEM INIT ()» ci-dessous. Il y a trois arguments dans ce «SEM_INIT."Ici, le paramètre" & my_sem "initialise le sémaphore comme le premier paramètre. La deuxième option spécifie comment partager ou utiliser ce sémaphore. Le deuxième argument, dans ce cas, est défini sur «0», qui indique que ce sémaphore ne sera utilisé que par des threads qui fonctionnent actuellement.

La valeur de départ du sémaphore est décrite par le troisième paramètre. Ici, «20» est entré en tant que valeur initiale du sémaphore. Ensuite, nous mettons ici la fonction «SEM_POST ()» et passons «& my_sem» comme paramètre. La méthode «SEM GetValue ()» sera ensuite utilisée pour récupérer la valeur initiale du sémaphore. Ici, les paramètres «& my sem» et «& num» sont passés. Cela renverra le numéro du Semaphore après l'exécution de la fonction "SEM_POST ()". Sa valeur initiale sera augmentée d'un.

Maintenant, en entrant dans l'instruction «printf» à cet endroit, nous imprimons ce numéro après l'exécution de la fonction «SEM_POST ()» sur l'écran du terminal. Les informations entrées apparaîtront à l'écran.

Pour obtenir la sortie de ce code, nous avons deux instructions. La première commande doit contenir le «-lpthread» et «-lrt» avant de pouvoir appuyer sur Entrée. Nous exécutons la deuxième commande après la compilation réussie de ce code C. La sortie est ensuite affichée. Vous pouvez voir à partir de cette sortie qu'il montre la valeur du sémaphore après que la fonction "SEM_POST ()" soit incrémentée d'un et affiche "21".

Exemple n ° 2:

Nous commençons notre prochain exemple en plaçant les fichiers d'en-têtes «STdio. H »et« Sémaphore. h ”. Nous devons ajouter ces fichiers d'en-tête pour ce code. Maintenant, nous utilisons la fonction «int main ()». Nous avons un sémaphore nommé «new_sem» et déclarons le «numéro» comme le type de données «int». Nous plaçons la fonction "sem_init ()" et donnons trois paramètres nécessaires pour cela. Nous mettons la valeur initiale de ce sémaphore comme «20», puis utilisons la fonction «SEM_POST ()» qui augmentera sa valeur initiale de.

Ensuite, mettez la fonction "sem_getValue ()" et passez deux paramètres de cette fonction et utilisez le "printf" en dessous. Donc, il affichera la valeur incrémentée à l'écran. Nous mettons à nouveau une autre fonction «SEM_POST ()» et mettons le même sémaphore dans cette deuxième fonction «SEM_POST ()». Ensuite, utilisez à nouveau le «SEM_GETVALUE ()» dont nous avons déjà discuté dans notre exemple précédent. "Printf" est utilisé pour imprimer la valeur après cette deuxième fonction "SEM_POST ()".

Vous pouvez le voir d'abord, il imprime la valeur du sémaphore comme «21» car nous donnons la valeur initiale du sémaphore comme «20». Après la fonction «SEM_POST ()», ses valeurs incrément de une et affichent «21». Dans la deuxième ligne, la valeur du sémaphore est «22» parce que nous mettons à nouveau la fonction «SEM_POST ()».

Exemple # 3:

Nous mettons légèrement à jour le code mentionné précédemment. Le code est le même que celui que nous avons établi plus tôt. Nous plaçons les deux fichiers d'en-tête «STdio. H »et« Sémaphore. h ”qui est nécessaire pour ce code. Nous utilisons également la fonction «int main ()» et nous déclarons le sémaphore et la valeur, un type de données «int», sous cette fonction principale. Après avoir utilisé «SEM Init» pour établir le sémaphore et passer ses arguments, nous utilisons la méthode «SEM GetValue ()» pour récupérer la valeur initiale du sémaphore. Après cela, imprimez-le comme nous l'avons déjà expliqué. La fonction "SEM_POST ()" est une nouvelle que nous ajoutons ici. Cette fonctionnalité est utilisée pour augmenter la valeur du sémaphore. Le résultat montrera comment la fonction «SEM_POST ()» augmente la valeur initiale de ce sémaphore. Nous utilisons ensuite à nouveau la fonction «SEM_GETVALUE ()» et en utilisant «printf ()», nous imprimons également cette valeur.

Dans cette sortie, la valeur initiale du sémaphore s'affiche d'abord, puis la valeur après la fonction "SEM_POST ()" s'affiche. Vous pouvez remarquer qu'il augmente la valeur initiale du sémaphore.

Conclusion

Nous écrivons ce guide pour en savoir plus sur la fonction «SEM_POST ()». Ce guide a couvert les codes de la fonction «SEM_POST ()» et les résultats. La fonction C «SEM_POST ()» a été couverte dans ce guide. Nous avons discuté de la façon dont la fonction «SEM_POST ()» augmente la valeur du sémaphore en C. Nous avons donné trois exemples distincts ici. Le code source C nécessaire pour utiliser la fonction «SEM_POST ()» a été fourni, ainsi que la sortie pour chaque exemple. Nous espérons que vous comprendrez clairement cette notion après avoir lu attentivement ce guide.