Nous considérons deux processus, appelés respectivement « producteur » et « consommateur ». Le producteur est un processus cyclique et chaque fois qu'il parcourt son cycle, il produit une certaine partie d'informations qui doivent être traitées par le consommateur. Le consommateur est également un processus cyclique et chaque fois qu'il parcourt son cycle, il peut traiter l'information suivante, telle qu'elle a été produite par le producteur. Un exemple simple est donné par un processus informatique, qui produit sous forme de « portions d'information » des images de cartes perforées devant être perforées par une carte perforée, qui joue le rôle du consommateur.[1]
Un producteur crée des éléments et les stocke dans une structure de données, tandis qu'un consommateur supprime des éléments de cette structure et les traite.
Si la consommation est supérieure à la production, le tampon (structure de données) se vide et le consommateur n'a rien à consommer
Si la consommation est inférieure à la production, le tampon se remplit et le producteur ne peut pas ajouter d'articles supplémentaires. Il s'agit d'un problème classique appelé tampon limité.
Supposons que nous ayons un producteur qui publie un e-mail dans le tampon et un consommateur qui consomme l'e-mail du tampon et affiche un message indiquant qu'un e-mail a été envoyé avec le nouveau mot de passe d'accès pour l'e-mail fourni.
package main import ( "fmt" "os" "strconv" "sync" "time" ) type buffer struct { items []string mu sync.Mutex } func (buff *buffer) add(item string) { buff.mu.Lock() defer buff.mu.Unlock() if len(buff.items)Expliquer la mise en œuvre
Lien du code : https://github.com/jcelsocosta/race_condition/blob/main/producerconsumer/buffer/producerconsumer.go
https://www.cin.ufpe.br/~cagf/if677/2015-2/slides/08_Concorrencia (Jorge).pdf
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3