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>