C Programmation

Posix Mutex avec programmation C

Posix Mutex avec programmation C
L'article d'aujourd'hui se concentrera sur l'utilisation de Posix Mutex avec la programmation C dans Linux Mint 20. Cependant, avant de passer à notre exemple principal, nous aimerions d'abord clarifier quelques terminologies, afin que vous puissiez facilement comprendre l'exemple de scénario que nous partagerons avec vous. Dans les systèmes d'exploitation, le concept de threading est largement utilisé. Les threads sont essentiellement des sous-processus qui sont délégués avec différentes tâches. Vous pouvez considérer l'exemple suivant pour comprendre le fonctionnement des threads.

Supposons qu'il existe un thread principal A, dont le travail consiste à calculer la somme des variables w et y où w=x+1, et y=z+2. Les valeurs des variables x et z doivent être récupérées par l'utilisateur. Dans ce scénario, nous pouvons créer deux threads, B et C. Le travail du thread B sera de prendre la valeur de la variable x de l'utilisateur, de l'incrémenter de 1, et de l'enregistrer dans la variable w. Le travail du thread C sera de prendre la valeur de la variable z de l'utilisateur, de l'incrémenter de 2, puis de l'enregistrer dans la variable y. Enfin, ces deux threads remettront ces résultats au thread principal A, qui calculera ensuite leur somme et affichera le résultat final.

Si nous n'avions créé aucun thread dans ce scénario, alors toutes les tâches auraient été effectuées par le thread principal A dans un temps beaucoup plus long. De cette façon, les threads peuvent effectuer efficacement vos calculs sans retards inutiles. Cependant, il existe une préoccupation majeure concernant l'utilisation des threads, connue sous le nom de « condition raciale ». C'est une situation dans laquelle deux threads essaient d'accéder et de modifier les mêmes données, les laissant ainsi incohérentes. En tant que programmeur, notre objectif devrait être d'éviter les conditions de course de la manière la plus gracieuse.

La solution la plus couramment utilisée pour éviter les conditions de course est l'utilisation de Mutex. Mutex signifie exclusion mutuelle, et il nous fournit essentiellement un mécanisme de verrouillage qui empêche l'accès et la modification des données critiques par plus d'un utilisateur à la fois. De cette façon, la cohérence des données est assurée. Posix est essentiellement une bibliothèque qui nous présente différentes fonctions intégrées qui facilitent beaucoup l'implémentation de threads et de Mutex. Avec l'exemple suivant, nous allons essayer d'apprendre l'utilisation de Posix Mutex avec la programmation C sous Linux Mint 20.

Exemple d'utilisation de Posix Mutex avec la programmation C dans Linux Mint 20

Nous allons effectuer les trois étapes suivantes pour vous guider dans l'utilisation de Posix Mutex avec la programmation C dans Linux Mint 20.

Étape #1: Création d'un programme démontrant l'utilisation de Posix Mutex avec la programmation C dans Linux Mint 20

Tout d'abord, nous allons créer un .cpp sur notre système Linux Mint 20. Nous allons simplement aller dans notre dossier Accueil, créer un document vide et le nommer Mutex.cpp. Une fois notre .cpp est créé, nous allons l'ouvrir avec l'éditeur de texte. Après cela, nous taperons le code affiché dans les images ci-dessous dans notre .fichier cpp :

Le code montré dans les deux images ci-dessus a créé deux threads différents. Le premier thread correspond au Job #1, tandis que le deuxième thread correspond au Job #2. Ensuite, nous avons créé un exemple de fonction nommée « Fonction Mutex ». Dans cette fonction, nous verrouillons d'abord la variable de verrouillage Mutex, et elle ne sera déverrouillée qu'une fois que le thread n°1 aura terminé le travail n°1. De même, la variable de verrouillage Mutex sera à nouveau verrouillée par le thread n°2 jusqu'à ce qu'elle termine le travail n°2. Cette « Fonction Mutex » est appelée par la fonction « principale ».

Étape #2 : Compilation du programme C dans Linux Mint 20

Après avoir enregistré le .cpp, nous allons maintenant le compiler via le terminal Linux Mint 20 avec la commande suivante :

$ gcc -o Mutex Mutex.cpp -pthread

Ici, "Mutex", après le drapeau "-o", fait référence au nom du fichier objet qui sera créé, alors que "Mutex.cpp" est le nom de l'original .fichier cpp. Le drapeau "-pthread" est nécessaire pour compiler ce programme car ce programme est écrit en utilisant la bibliothèque "pthread". Si vous omettez ce drapeau, votre programme ne sera pas compilé et affichera des erreurs. La compilation réussie de notre .cpp ne produira aucun message sur le terminal, comme le montre l'image ci-dessous :

Étape #3 : Exécuter le programme C dans Linux Mint 20

Une fois le fichier objet nommé « Mutex » créé, nous pouvons l'exécuter à l'aide de la commande suivante :

$ ./Mutex

En sortie de notre Mutex.cpp, vous remarquerez que le premier Job 1 a démarré, ce qui signifie que le thread #1 a acquis le verrou Mutex. Après cela, le travail 1 se termine après un certain temps. Ensuite, le Job 2 démarre, ce qui signifie que le thread #2 a acquis le verrou Mutex. Il ne sera déverrouillé qu'une fois le Job 2 terminé.

Conclusion

Cet article a fourni une explication détaillée de l'utilisation de Posix Mutex avec la programmation C dans Linux Mint 20. Le Mutex peut être utilisé très efficacement pour éviter les conditions de course lors de la programmation en incluant simplement la bibliothèque Posix ou pthread dans notre code C. Cela garantira non seulement la cohérence des données, mais rendra également le traitement beaucoup plus efficace.

La meilleure chose à propos de l'utilisation de la bibliothèque Posix sous Linux est que nous n'avons même pas besoin d'installer de logiciel, de package ou de compilateur spécialisé pour cela. Le code C peut simplement être écrit dans n'importe quel éditeur de texte par défaut sous Linux et peut être compilé et exécuté avec les compilateurs gcc ou g++ par défaut. Cela s'avère être une couche supplémentaire de facilité et de commodité dans l'utilisation de Posix Mutex avec la programmation C dans Linux Mint 20.

Comment modifier les paramètres de la souris et du pavé tactile à l'aide de Xinput sous Linux
La plupart des distributions Linux sont livrées avec la bibliothèque "libinput" par défaut pour gérer les événements d'entrée sur un système. Il peut ...
Remappez les boutons de votre souris différemment pour différents logiciels avec X-Mouse Button Control
Peut-être que vous avez besoin d'un outil qui pourrait faire changer le contrôle de votre souris avec chaque application que vous utilisez. Si tel est...
Examen de la souris sans fil Microsoft Sculpt Touch
J'ai lu récemment sur le Microsoft Sculpt Touch souris sans fil et j'ai décidé de l'acheter. Après l'avoir utilisé pendant un certain temps, j'ai déci...