Salut à tous.
Je me posais une question en rapport avec l'utilisation des sémaphores. Je l'ai appris dans le passé mais je n'ai jamais pu me rappeller la solution
J'ai plusieurs processus qui vont accéder à une même ressource. Le plus facile serait de la protéger avec un sémaphore. Néanmoins, pour des questions d'optimisation l'énoncé est un peu plus complexe. J'ai deux types de processus, certains lisent (readers) et d'autres écrivent (writers). Tant qu'il n'y a que des readers, ils peuvent accéder à la ressource à 20 simultanément si nécessaire. Mais si un writer décide d'utiliser la ressource, tout le monde se retrouve bloqué (donc il n'y a plus ni readers ni d'autres writers qui peuvent y toucher).
Le code ressemble donc à ceci:
Il me faudrait donc un petite explication sur l'implémentation des 4 méthodes de verouillage/déverouillage, les sémaphores à utiliser, les éventuelles variables à mettre en place, ect... Pas besoin d'utiliser le code d'une api quelconque, les sémaphores tout le monde connait alors un pseudo code quelconque suffira
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 read() { verouiller_pour_la_lecture(); lire_un_truc(); deverouiller_pour_la_lecture(); } write() { verouiller_pour_l_ecriture(); ecrire_un_truc(); deverouiller_pour_l_ecriture(); }
Merci d'avance à ceux qui me répondront.
Partager