Я нашел псевдокод о том, как реализовать циклический буфер.
// 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. */
}
Чего я не понимаю, так это «Потребить предмет w». комментарий, потому что я думаю, что с w = b[out];
мы потребляем w
, не так ли?