Разработка, производство и продажа радиоэлектронной аппаратуры
|
Карта сайта
|
Пишите нам
|
В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:
jobsmp@pochta.ru
Телесистемы
|
Электроника
|
Конференция «Микроконтроллеры и их применение»
Что правильней делать при переполнении буфера приема?
Отправлено
mandigit
09 октября 2008 г. 21:51
Что лучше в общем случае?
1. Замещать самый старый символ новым
2. Отбрасывать новый символ
Составить ответ
|
Вернуться на конференцию
Ответы
Ответ: (-)
-
Jack
(10.10.2008 20:24:48
91.203.80.65
,
пустое
)
включать самоликвидатор...
-
basilmak
(10.10.2008 12:33:3
82.142.173.231
,
пустое
)
Правильней написать такую программу, чтобы переполнения буфера не было в принципе.
-
argus98
(10.10.2008 09:11:39
81.22.205.230
,
пустое
)
ууууу, неправильно это - надеяться, что вся большая программа будет написан...{+}
-
mandigit
(10.10.2008 11:29:0
91.76.254.125
, 221 байт)
Что значит "надеяться"? Делать надо правильно.. Почему-то (+):
-
argus98
(10.10.2008 11:47:59
81.22.205.230
, 392 байт)
Количество возможных тестов растет не в линейной, а в степенной зависимости от сложности системы
-
mandigit
(10.10.2008 18:13:39
91.76.254.125
, 283 байт)
некорректность)) Ужо чуть ли не академик в прессе сказал (цитата по смыслу) "увы, но современных программистов нельзя и не надо причислять к инженерам". Согласен на все 100, а уж тем более к "инженерам-разработчикам")) Мона там к "инженер по кадрам" и т.п.)))
-
basilmak
(10.10.2008 17:13:31
82.142.173.231
,
пустое
)
Ответ:
-
leon
(09.10.2008 23:59:50
82.207.118.64
, 682 байт)
Если получен флаг переполнения буфера (или обнаружено увеличение счетчика переполнений), необходимо прием предыдущего пакета прекратить и начать искать маркер в надежде принять полностью очередной пакет.
-
leon
(10.10.2008 00:15:0
82.207.118.64
,
пустое
)
В общем-то уже сказали все. Если это поток данных для которого актуальны самые "свежие" значения, то закольцовывать по кругу. Если же дела протокольные, то управлять потоком, а при невозможности стопориться до освобождения места в буфере, установив семафор переполнения.
-
rezident
(09.10.2008 23:58:55
77.43.214.195
,
пустое
)
+1 Поддерживаю полностью
-
PaulS
(10.10.2008 00:17:14
78.107.190.90
,
пустое
)
Прально грит народ про зависимость от протокола+++
-
PaulS
(09.10.2008 23:30:32
78.107.190.90
, 428 байт)
Аргументировать можешь
-
mandigit
(09.10.2008 23:39:57
91.76.254.125
, 166 байт)
Ну блин, аргУменты разные++
-
PaulS
(10.10.2008 00:09:44
78.107.190.90
, 661 байт)
так я против кольцевого буфера ничего не имею
-
mandigit
(10.10.2008 00:19:29
91.76.254.125
, 106 байт)
Здесь важно в первую очередь что за данные в буфер скидываются. Если это например оцифровка какого-либо переходного процесса.
-
Elektronik
(09.10.2008 23:52:48
93.81.93.94
, 166 байт)
Вот при оцифровке, лучше бы затирать старое и при запросе отдавть новое. Хотя я согласен, многое зависит от задачи.
-
PaulS
(10.10.2008 00:13:7
78.107.190.90
,
пустое
)
как можно откинуть, так прото, данные. Может они критичны. А может и нет) Решать программисту в Конкретном примере.
-
nut
(09.10.2008 23:37:43
172.25.43.185,195.131.84.202
,
пустое
)
А если он библиотекой пользуется и не надо ему заморачиваться об этом - как...{+}
-
mandigit
(09.10.2008 23:41:27
91.76.254.125
, 207 байт)
вот что-что. а за свою жизнь понял одно - никогда нет общего случая. есть бесконечное число частных. А все стремления унифицировать - приводят к компромису, качество падает. Это не только к технике относится.
-
nut
(09.10.2008 23:46:53
172.25.43.185,195.131.84.204
, 200 байт)
есть общий случай! надо искать с большими сиськами!)))
-
колян безпарольный
(10.10.2008 00:37:30
193.200.150.23
,
пустое
)
если перед кольцеванием, то такида :)
-
rezident
(10.10.2008 00:47:38
77.43.214.195
,
пустое
)
+100!
-
-=Shura=-
(09.10.2008 23:49:51
12.46.238.2
,
пустое
)
Но ведь вся технократическая цивилизация построена на стандартах и унификац...{+}
-
mandigit
(10.10.2008 00:01:52
91.76.254.125
, 194 байт)
таки вы продаёте или покупаете?))
-
nut
(10.10.2008 00:12:12
172.25.43.185,195.131.84.251
,
пустое
)
Но ведь так делается почему-то? Да и стандарты я люблю - главное не переусердствовать :)
-
mandigit
(10.10.2008 00:25:19
91.76.254.125
,
пустое
)
у меня холодильник полный. А принёс ещё еды. ЧТО делать? выкинуть всё с нижней полки и запихать туда новую еду? А может новую выкинуть?
-
nut
(09.10.2008 23:27:24
172.25.43.185,195.131.84.251
, 58 байт)
надкусывать
-
Каа
(09.10.2008 23:57:32
85.172.44.122
,
пустое
)
:-D Фточку! Оставить от каждого байта по тетраде чтоб никому не обидно было :-))))
-
-=Shura=-
(10.10.2008 00:07:49
12.46.238.2
,
пустое
)
младший нибл, старший нибл ...
-
mandigit
(10.10.2008 00:23:1
91.76.254.125
,
пустое
)
Сказка 'Огниво'. Появился сундук с серебром -медь из рюгзака выкиды...{+}(+)
-
VasilyS
(09.10.2008 23:38:1
80.92.96.25
, 340 байт)
+011000101
-
nut
(09.10.2008 23:47:37
172.25.43.185,195.131.84.204
,
пустое
)
Здесь ответ: "выбросить старую еду, уложить новую"
-
mandigit
(09.10.2008 23:32:58
91.76.254.125
, 56 байт)
что задача задаче рознь. что в правильной задаче такая ситуация не возникнет. Но защита, конечно нужна. И вам решать\в вашей конкретной задаче\ что подходит больше.
-
nut
(09.10.2008 23:36:32
172.25.43.185,195.131.84.204
, 269 байт)
Зависит от того какие данные для вас имеют более важное значение. Например (+)
-
=NIK=
(09.10.2008 23:17:34
91.77.23.138
, 108 байт)
А вообще в большинстве задач неважно, главное чтобы по памяти указателем не ездил :)
-
=NIK=
(09.10.2008 23:18:6
91.77.23.138
,
пустое
)
Взводим флаг переполнения (или увеличиваем счетчик переполнений), самый старый выбрасываем, новый и остальные в порядке поступления оставляем. Т.е. при переполнении у нас всегда в буфере находится максимальное количество символов, пришедших последними (самые свежие), и в порядке поступления.
-
leon
(09.10.2008 22:33:45
82.207.118.64
,
пустое
)
Если в кольцевом буфере индекс записи догоняет индекс чтения, то запись производим как обычно, а индекс чтения тоже продвигаем. Т.о. самый старый удаляется, колич символов в буфере остается каждый раз максимальным.
-
leon
(09.10.2008 22:38:27
82.207.118.64
,
пустое
)
Да, и порядок поступления не нарушается.
-
leon
(09.10.2008 22:40:39
82.207.118.64
,
пустое
)
Наверное это единственный ответ на поставленный вопрос :) спсб
-
mandigit
(09.10.2008 22:46:17
91.76.254.125
,
пустое
)
Лучше новым замещать. Но гравное всегда думать об этом переполнении буфера, потому что половина всех эксплоитов в винде на этом основана.
-
БУБУ
(09.10.2008 22:11:11
195.131.143.177
,
пустое
)
вот - истина в первой инстанции. мы же не форточки пишем, которые в любое в...{+}
-
mandigit
(09.10.2008 22:19:11
91.76.254.125
, 266 байт)
От протокола зависит.
-
Mebius
(09.10.2008 21:54:57
77.108.94.123
,
пустое
)
+1. Иногда буфер при переполнении нужно сбрасывать.
-
AZ
(09.10.2008 22:41:8
92.112.206.129
,
пустое
)
Т.е. нужно начинать прием сначала.
-
AZ
(09.10.2008 22:44:15
92.112.206.129
,
пустое
)
херня с постановкой задачи и её реализацией, буфер не должен переполняться никогда.
-
колян безпарольный
(09.10.2008 21:53:24
193.200.150.23
,
пустое
)
Всегда предусматриваю такую возможность, даже если это - невозможно
-
mandigit
(09.10.2008 21:58:25
91.76.254.125
,
пустое
)
там где это теоретически возможно используют управление потоком
-
-=Shura=-
(09.10.2008 22:01:21
12.46.238.2
,
пустое
)
Но теоретически это возможно в любой системе!
-
mandigit
(09.10.2008 22:17:45
91.76.254.125
, 609 байт)
не в любой, а в неисправной или криво спроектированной
-
-=Shura=-
(09.10.2008 22:27:5
12.46.238.2
,
пустое
)
А каковы критерии исправности и прямоспроектированности?
-
mandigit
(09.10.2008 22:30:42
91.76.254.125
,
пустое
)
Фелосов? Рабиндранат Тагорович Спиноза? ;-)
-
-=Shura=-
(09.10.2008 22:32:14
12.46.238.2
,
пустое
)
Чингачгук :)
-
mandigit
(09.10.2008 22:32:54
91.76.254.125
,
пустое
)
А! Ну здраствуйте, Вано Абрамович :-)
-
-=Shura=-
(09.10.2008 22:34:28
12.46.238.2
,
пустое
)
А насчёт критериев исправности надо будет отдельную ветку поднять - это тема
-
mandigit
(09.10.2008 22:36:9
91.76.254.125
,
пустое
)
Ога :-) И специалист известный сюда иногда захаживает ;-)
-
-=Shura=-
(09.10.2008 22:43:31
12.46.238.2
,
пустое
)
За что так эмоционально :) Сделайте обычный циклический буфер. Если указатель записи догонит указатель чтения, взводите флажок.
-
war4one
(09.10.2008 22:25:5
83.174.245.20
,
пустое
)
Насчёт флажков - все правильно. Вопрос - что делать с байтом, который в буфер не лезет?
-
mandigit
(09.10.2008 22:32:3
91.76.254.125
,
пустое
)
надо его (байт) не принимать, тогда и ничего с ним делать не надо будет
-
nestandart
(09.10.2008 22:44:44
87.180.54.100
,
пустое
)
Это как раз один из вариантов
-
mandigit
(09.10.2008 22:47:7
91.76.254.125
,
пустое
)
Вопрос надуманный имхо
-
-=Shura=-
(09.10.2008 22:36:27
12.46.238.2
,
пустое
)
Источник вопроса ...
-
mandigit
(09.10.2008 22:44:5
91.76.254.125
, 148 байт)
Товарищи правильно подсказывают что зависит от того что и как передаётся. В общем случае можно сказать что совершаемое действие должно способствовать восстановлению нормального обмена данными
-
-=Shura=-
(09.10.2008 22:48:31
12.46.238.2
, 255 байт)
А логично-ли отбрасывать более новые байты пока не ответил на старый пакет?
-
mandigit
(09.10.2008 22:57:4
91.76.254.125
, 96 байт)
логично, т.к. правильно спроектированная система будет долбить один и тот же пакет, пока не получит ответа
-
-=Shura=-
(09.10.2008 22:58:35
12.46.238.2
,
пустое
)
А мои правильно спроектированные системы переходят к следующему режиму, ког...{+}
-
mandigit
(09.10.2008 23:06:49
91.76.254.125
, 231 байт)
Классно так, сопло жидкостно-абразивного резака продолжает движение по оси OX не получив ответа от модуля измерения перемещения по оси ОY. Титановая болванка ценой 20тыс евро удачно разрезанна вдоль пополам))
-
колян безпарольный
(09.10.2008 23:23:53
193.200.150.23
,
пустое
)
Не знаю что такое жидкостно-абразивный резак
-
mandigit
(09.10.2008 23:31:50
91.76.254.125
, 335 байт)
жидкостно-абразивный резак
-
nestandart
(10.10.2008 00:04:7
87.180.54.100
,
пустое
,
ссылка
)
просто сам факт переполнения
-
колян безпарольный
(09.10.2008 23:57:22
193.200.150.23
, 904 байт)
Счас какой-нибудь пример за уши притяну
-
mandigit
(10.10.2008 00:15:19
91.76.254.125
, 534 байт)
вот и делать два фифо
-
nestandart
(10.10.2008 00:55:10
87.180.54.100
,
пустое
)
Что это за некритичный вход? Если данные по этому входу никому не нужны, но нефиг их и собирать вообще
-
-=Shura=-
(10.10.2008 00:37:52
12.46.238.2
,
пустое
)
Бытовой пример
-
mandigit
(10.10.2008 00:46:16
91.76.254.125
, 310 байт)
Пример неудачный.
-
-=Shura=-
(10.10.2008 00:53:14
12.46.238.2
, 158 байт)
Угу, точно. Если не успел разгрести - не подтверждает, происходит повтор передачи.
-
mandigit
(10.10.2008 10:23:11
91.76.254.125
,
пустое
)
GoTo 616849.shtml
-
колян безпарольный
(10.10.2008 00:30:36
193.200.150.23
, 517 байт)
Система может быть именно так спроектирована. А профицит ресурсов не всегда доступен или оправдан.
-
mandigit
(10.10.2008 00:48:11
91.76.254.125
,
пустое
)
и какой в этом глубинный смысл? если ответ предусмотрен, то он должен быть получен
-
-=Shura=-
(09.10.2008 23:08:33
12.46.238.2
,
пустое
)
Выход из строя одного из отвечающих не должен нарушать функционирование сис...{+}
-
mandigit
(09.10.2008 23:16:28
91.76.254.125
, 227 байт)
Для системы с несколькими отвечающими это верно, сам так делаю
-
-=Shura=-
(09.10.2008 23:27:49
12.46.238.2
,
пустое
)
Отправка ответа
Имя*:
Пароль:
E-mail:
Тема*:
Сообщение:
Ссылка на URL:
URL изображения:
если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
введите число 567:
Перейти к списку ответов
|
Конференция
|
Раздел "Электроника"
|
Главная страница
|
Карта сайта
Web
telesys.ru