LINUX.ORG.RU

История изменений

Исправление Vit, (текущая версия) :

как проверять, что очередь пуста?

Если указатели на голову и хвост совпадает - считаем пустой. Самое большее чем рискуешь - прочитать старое значение. Ну на следующем опросе «догонишь», не страшно.

или переполнилась? класть без проверки на переполнение? а брать без проверки на пустоту?

Ты не учитываешь, что поведение многих систем детерминировано. И там можно подобрать длину очереди, которая ГАРАНТИРУЕТ отсутствие переполнений. В этом смысл метода. Таки да, переполнение проверять не надо. Более того, для большинства случаев длины = 2 хватит за глаза (если у тебя нет тяжелых вычислений).

Для примера - у меня в регуляторе едут отсчеты с датчиков, с фиксированным интервалом. Ну теоретически я могу слегка залипнуть с обработкой, если вызову дебажный printf(). Но залипнуть и пропустить 100 отсчетов даже в теории невозможно.

Исходная версия Vit, :

как проверять, что очередь пуста?

Если указатели на голову и хвост совпадает - считаем пустой. Самое большее чем рискуешь - прочитать старое значение. Ну на следующем опросе «догонишь», не страшно.

или переполнилась? класть без проверки на переполнение? а брать без проверки на пустоту?

Ты не учитываешь, что поведения многих систем детерминировано. И там можно подобрать длину очереди, которая ГАРАНТИРУЕТ отсутствие переполнений. В этом смысл метода. Таки да, переполнение проверять не надо. Более того, для большинства случаев длины = 2 хватит за глаза (если у тебя нет тяжелых вычислений).

Для примера - у меня в регуляторе едут отсчеты с датчиков, с фиксированным интервалом. Ну теоретически я могу слегка залипнуть с обработкой, если вызову дебажный printf(). Но залипнуть и пропустить 100 отсчетов даже в теории невозможно.