J'ai trouvé un pseudo code sur la manière de mettre en place un tampon circulaire.
// Producer.
while (true) {
/* produce item v */
while ((in+1)%n == out)
/* Wait. */;
b[in] = v;
in = (in + 1) % n
}
// Consumer.
while (true) {
while (in == out)
/* Wait. */;
w = b[out];
out = (out + 1) % n;
/* Consume item w. */
}
3 Réponses :
Oui, car alors c'est hors du tampon, lequel dit la ligne suivante est vide. Ensuite, nous pouvons traiter w. P>
Ces deux lignes font partie du processus de consommation:
w = b[out]; out = (out + 1) % n;
Quand il est écrit / * produire l'élément V * / CODE> Nous devons attribuer V à un nombre aléatoire ou quelque chose du genre. Je pensais avoir besoin d'un processus différent pour "/ * consommer l'élément w. * / `
Consommez un élément signifie récupérer sa valeur et ne l'accède plus.
"Le commentaire fait référence aux deux lignes précédemment." - Ce qui, j'ajouterais, devrait être illégal.
avec Vous ne saisissez qu'une copie de l'élément à consommer. Avec p> Vous avancez l'index de l'élément à consommer, empêchant ainsi d'être référencé à nouveau. p> d'une manière, plusieurs appels à W = B [OUT]; CODE> Ne consommez pas réellement le logement de la mémoire tampon, il y accède simplement; tandis que out = (out + 1)% n; code> empêche l'accès supplémentaire de cet élément. Empêcher davantage l'accès de l'élément tampon est la définition la plus forte du terme "consommer l'élément" que je peux penser. P> p>