1. Algorithme non bloquant
Les algorithmes non bloquants appartiennent à l'algorithme simultané. La conception et la mise en œuvre d'algorithmes non bloquantes sont extrêmement difficiles, mais ils peuvent fournir un meilleur débit et peuvent également fournir une meilleure défense sur les problèmes de survie (tels que les verrous morts et l'inversion prioritaire). Utilisez l'instruction de la machine atomique sous-jacente pour remplacer le verrou, tel que la comparaison et l'échange (CAS, comparer-and-bwap).
2. Technologie Pessy
Le verrou exclusif est une sorte de technologie pessimiste. État de l'objet.
3. Technologie optique
S'appuyant sur la surveillance des conflits.
4.CAS OPÉRATION
CAS a 3 opérations, la valeur de mémoire V et une ancienne valeur attendue A, la nouvelle valeur B à modifier. Lorsque la valeur attendue A est la même que la valeur de dépôt interne V, la valeur de dépôt interne V est modifiée à B, sinon rien ne sera fait. Le mode typique du CAS est: Lisez d'abord A depuis V, calculez la nouvelle valeur B en fonction de A, puis utilisez le CAS pour modifier la valeur en V de A à la valeur est modifiée à d'autres valeurs).
Liste 3. Expliquez le code de copie de code du comportement (non des performances) de la comparaison et de l'échange.
Classe publique Simulatedcas {
Valeur int privée;
Public synchronisé int getValue () {valeur de retour;}
Public synchronisé int comparaisondswap (int attenduvalue, int newvalue) {
int oldvalue = valeur;
if (valeur == attenduvalue)))
valeur = newValue;
Retour OldValue;
}
}
Listing 4. Utilisez la comparaison et l'échange pour implémenter le code de code de contre-copie comme suit:
Classe publique Cascounter {
Valeur privée simulécas;
public int getValue () {
Return value.getValue ();
}
public Int incrément () {{)
int oldvalue = value.getValue ();
Tandis que (valeur.comparendSwap (OldValue, OldValue + 1)! = OldValue)
OldValue = value.getValue ();
Retour OldValue + 1;
}
}
5. Variables atomiques
La prise en charge des variables atomiques peut mettre à jour l'atomicité sans protection de verrouillage, et sa couche inférieure est implémentée avec CAS. Il existe 12 variables atomiques, qui peuvent être divisées en 4 groupes: catégorie scalaire, classe de mise à jour, classe de tableau et variables composites. Les variables atomiques les plus couramment utilisées sont les catégories scalaires: atomicinteger, atomiclong, atomicboolen et atomicreference. Tous les types prennent en charge CAS.
6. Comparaison des performances: variables de verrouillage et atomiques
Dans la compétition de niveau bas et moyen, les variables atomiques peuvent fournir une évolutivité élevée et les performances des variables atomiques dépassent les serrures; Essence de performance variable Mais dans des situations réelles plus réalistes, les performances des variables atomiques dépasseront les performances de la serrure.