История изменений
Исправление Vit, (текущая версия) :
как проверять, что очередь пуста?
Если указатели на голову и хвост совпадает - считаем пустой. Самое большее чем рискуешь - прочитать старое значение. Ну на следующем опросе «догонишь», не страшно.
или переполнилась? класть без проверки на переполнение? а брать без проверки на пустоту?
Ты не учитываешь, что поведение многих систем детерминировано. И там можно подобрать длину очереди, которая ГАРАНТИРУЕТ отсутствие переполнений. В этом смысл метода. Таки да, переполнение проверять не надо. Более того, для большинства случаев длины = 2 хватит за глаза (если у тебя нет тяжелых вычислений).
Для примера - у меня в регуляторе едут отсчеты с датчиков, с фиксированным интервалом. Ну теоретически я могу слегка залипнуть с обработкой, если вызову дебажный printf(). Но залипнуть и пропустить 100 отсчетов даже в теории невозможно.
Исходная версия Vit, :
как проверять, что очередь пуста?
Если указатели на голову и хвост совпадает - считаем пустой. Самое большее чем рискуешь - прочитать старое значение. Ну на следующем опросе «догонишь», не страшно.
или переполнилась? класть без проверки на переполнение? а брать без проверки на пустоту?
Ты не учитываешь, что поведения многих систем детерминировано. И там можно подобрать длину очереди, которая ГАРАНТИРУЕТ отсутствие переполнений. В этом смысл метода. Таки да, переполнение проверять не надо. Более того, для большинства случаев длины = 2 хватит за глаза (если у тебя нет тяжелых вычислений).
Для примера - у меня в регуляторе едут отсчеты с датчиков, с фиксированным интервалом. Ну теоретически я могу слегка залипнуть с обработкой, если вызову дебажный printf(). Но залипнуть и пропустить 100 отсчетов даже в теории невозможно.