Maison > développement back-end > Golang > le corps du texte

Comment implémenter un verrou avec une date limite dans Golang ?

Linda Hamilton
Libérer: 2024-11-01 00:40:36
original
260 Les gens l'ont consulté

How to Implement a Lock with a Deadline in Golang?

Acquérir des verrous avec des contraintes de temps à Golang

Lorsque vous travaillez avec des verrous à Golang, il existe des situations dans lesquelles vous devrez peut-être acquérir un verrou immédiatement ou respecter une certaine forme de délai. Alors que sync.Mutex de la bibliothèque standard ne fournit que les fonctions Lock() et Unlock(), il existe une technique qui permet d'émuler un verrou avec une date limite.

Implémentation d'un verrou avec une date limite

Implémentation d'un verrou avec une date limite

l := make(chan struct{}, 1)
Copier après la connexion

Pour créer un verrou avec une date limite, vous pouvez utiliser un canal avec une taille de tampon de un :

l <- struct{}{}
Copier après la connexion

Pour verrouiller, envoyez une valeur de structure au canal :

<-l
Copier après la connexion

Pour déverrouiller, recevez de la chaîne :

Effectuer un verrouillage d'essai

select {
case l <- struct{}{}:
    // lock acquired
    <-l
default:
    // lock not acquired
}
Copier après la connexion

Pour tenter un verrouillage d'essai, utilisez une instruction select :

Ce code permettra d'acquérir immédiatement le verrou s'il est disponible. Si le verrou est déjà maintenu, l'instruction select se bloquera jusqu'à ce que le verrou soit libéré.

Try Lock with Timeout

select {
case l <- struct{}{}:
    // lock acquired
    <-l
case <-time.After(time.Minute):
    // lock not acquired
}
Copier après la connexion

Pour spécifier un délai d'attente pour le verrou d'essai, ajoutez un canal time.After() à l'instruction select :

Ce code tentera d'acquérir le verrou pendant une minute maximum. Si le délai d'attente expire, l'instruction select se terminera et le verrou ne sera pas acquis.

Conclusion

Utilisation d'un canal avec une taille de tampon de un comme mutex vous permet d'implémenter un try lock avec une date limite. Cette technique peut être utile dans les scénarios où vous devez acquérir un verrou rapidement ou dans un délai précis.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!