Supposons que le code suivant soit exécuté par 10 threads.
pthread_mutex_lock(&lock)
Some trivial code
pthread_mutex_unlock(&lock)
Pour les besoins de l'explication, disons que les fils sont T1, T2, T3.....T10. Mon exigence est que tant que T1 ou T2 ou T3 (c'est-à-dire n'importe lequel de T1, T2 ou T3) attende pour acquérir un verrou, les autres threads, c'est-à-dire T4, T5, T6.....T10, ne puissent pas acquérir le verrou, c'est-à-dire que T1, T2 et T3 aient la priorité pour acquérir le verrou par rapport aux autres threads.
Je suppose que cela peut être fait en augmentant la priorité des threads T1, T2 et T3.
Voici le pseudo-code
if this thread is T1 or T2 or T3
increase its priority
pthread_mutex_lock(&lock)
Some trivial code
pthread_mutex_unlock(&lock)
if this thread is T1 or T2 or T3 decrease it priority to normal
Veuillez noter que je veux une solution qui fonctionne pour la plateforme Linux et qui doit utiliser pthreads. Je ne me soucie pas vraiment des autres plateformes.
Notez également que je ne veux pas vraiment que ces 3 threads soient en temps réel, je veux qu'ils aient leur comportement habituel (ordonnancement et priorité) sauf que dans le petit morceau de code mentionné ci-dessus, je veux qu'ils aient toujours la priorité pour acquérir un verrou.
J'ai lu quelques pages de manuel sur les politiques et les priorités d'ordonnancement sous Linux, mais je ne comprends pas vraiment :(
Est-ce que ça va marcher ? Pouvez-vous m'indiquer l'API pthread exacte requise pour accomplir la tâche ci-dessus ?
Salutations lali