Garanties de progression sans verrouillage dans une file d'attente de tampon circulaire
Aperçu :
De nombreux programmeurs croire à tort que « sans verrouillage » fait simplement référence à une programmation simultanée sans mutex. Cependant, de véritables algorithmes sans verrouillage offrent des garanties de progression, garantissant qu'au moins un thread peut progresser quelles que soient les actions des autres threads.
La file d'attente délimitée Liblfds :
L'implémentation d'une file d'attente limitée dans la bibliothèque liblfds semble discutable en termes de garanties de progression sans verrouillage. L'algorithme réserve des emplacements pour le push, ce qui signifie que les emplacements ne peuvent pas être ouverts tant que le thread de push n'est pas terminé. Cette dépendance soulève des inquiétudes quant à savoir si la file d'attente est réellement considérée comme sans verrouillage.
Définition de Lock-Free :
Une structure sans verrouillage est une structure dans laquelle n'importe quel thread peut être suspendu indéfiniment à tout moment sans empêcher les autres threads d'utiliser la structure. Selon cette définition, la file d'attente liblfds n'est pas strictement sans verrouillage. Si un thread de transmission est suspendu, la file d'attente entre dans un état inutilisable, violant le contrat d'une file d'attente de taille fixe.
Performances vs exactitude :
Pendant cette implémentation peut présenter des propriétés de performances raisonnables, il lui manque certaines propriétés d'exactitude critiques d'une structure véritablement sans verrouillage. Les principales lacunes fonctionnelles incluent :
Conclusion :
L'implémentation de la file d'attente délimitée par liblfds n'est pas à la hauteur de la définition la plus stricte de l'absence de verrouillage. Il offre certains avantages en termes de performances mais manque de certaines garanties fonctionnelles qui sont cruciales pour garantir la progression et l'exactitude dans tous les scénarios.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!