-
- Хватит одного счётчика, который обработчик прерывания инкрементирует после обновления данных. Потребитель читает счётчик, потом данные, потом снова счётчик. Если значения совпали, - данные верны(13.10.2014 12:58, )
- А, ну да. - SciFi(13.10.2014 13:02)
- Счетный семафор это типа реверсивного счетчика, который подсчитывает сколько раз прощелкали клювом :) - Codavr(13.10.2014 12:22)
- А чем это отличается от инвертирования бита (обычного семафора)? Скрипач(84 знак., 13.10.2014 12:21)
- Если потребитель захватил семафор, то производитель сосет банан. А тут производитель всегда свободен, а потребитель имеет инфу о том что принятые данные корректны. - Codavr(13.10.2014 12:24)
- Значит потребитель не должен захватывать семафор. Только читать его. - Скрипач(13.10.2014 12:29)
- Ну вот я прочитал что семафор свободен. Взял словечко. В это время DMA хвать семафор, новые данные тынц, и тут же отдал семафор. Я как ни в чем не бывало читаю семафор, он свободен, беру второй байтик и писец Чернобыль-2. - Codavr(13.10.2014 12:31)
- *О механизмах блокировки рекомендую "Алгоритмические языки реального времени. Конструирование и разработка" С.Янг., 1982г. Скрипач(214 знак., 13.10.2014 12:34 - 12:42)
- Книга в PDF бомж(13.10.2014 17:56)
- Почитаю на досуге. Блин! Она у меня была, какая сука не вернула!? - Codavr(13.10.2014 12:40 - 12:54)
- Возможно, среди общепринятых примитивов синхронизации нет примочки с двумя счётчиками, потому что эта примочка ничего не гарантирует: в худшем (общем) случае можно ждать бесконечно. SciFi(97 знак., 13.10.2014 12:40)
- Ну когда ждем бесконечно потому что пожелал больше собственного веса - сам дурак. Эта ситуация тривиальная и ее не рассматриваем. - Codavr(13.10.2014 12:44)
- Она является "велосипедом с квадратными колесами", поскольку функционал идентичен обычному семафору :) - Скрипач(13.10.2014 12:43)
- Лукавить изволишь, боярин. С семафорами нужно ещё и FIFO городить, а тут этого нет. Такшта извени, не считается. - SciFi(13.10.2014 12:50)
бредЛогической связи семафора и FIFO не уловил. - Скрипач(13.10.2014 12:55)
- Ну тогда объясни на пальцах как правильно семафором это реализовать. У меня фигня получилась. Я согласен, что чего то не знаю наверное, вот потому и решил спросить у старших товарищей. Отсылка к книге дело полезная - она сила и источник знаний, и Codavr(257 знак., 13.10.2014 12:46 - 12:49)
- Если "в лоб", то вот так: Скрипач(568 знак., 13.10.2014 12:53 - 13:25)
- Чота нефкурил. Семафор здесь кто, lock? - Codavr(13.10.2014 13:00)
- Исправил. Семафор - lock. Но не простой, а счетный. Корректно обрабатывается "параллельное чтение" несколькими юзерами. - Скрипач(13.10.2014 13:10)
- То есть семафором рулит потребитель, а обработчик его только смотрит. Пока все потребитель не схавал, данные не обновляем. Понял. Спасибо. - Codavr(13.10.2014 13:23)
- Исправил. Семафор - lock. Но не простой, а счетный. Корректно обрабатывается "параллельное чтение" несколькими юзерами. - Скрипач(13.10.2014 13:10)
- Чота нефкурил. Семафор здесь кто, lock? - Codavr(13.10.2014 13:00)
- Если "в лоб", то вот так: Скрипач(568 знак., 13.10.2014 12:53 - 13:25)
- Лукавить изволишь, боярин. С семафорами нужно ещё и FIFO городить, а тут этого нет. Такшта извени, не считается. - SciFi(13.10.2014 12:50)
- *О механизмах блокировки рекомендую "Алгоритмические языки реального времени. Конструирование и разработка" С.Янг., 1982г. Скрипач(214 знак., 13.10.2014 12:34 - 12:42)
- Ну вот я прочитал что семафор свободен. Взял словечко. В это время DMA хвать семафор, новые данные тынц, и тут же отдал семафор. Я как ни в чем не бывало читаю семафор, он свободен, беру второй байтик и писец Чернобыль-2. - Codavr(13.10.2014 12:31)
- Значит потребитель не должен захватывать семафор. Только читать его. - Скрипач(13.10.2014 12:29)
- Если потребитель захватил семафор, то производитель сосет банан. А тут производитель всегда свободен, а потребитель имеет инфу о том что принятые данные корректны. - Codavr(13.10.2014 12:24)
- Ну да именно в этом. Интересный способ. Спасибо. - Codavr(13.10.2014 12:18)
- Хватит одного счётчика, который обработчик прерывания инкрементирует после обновления данных. Потребитель читает счётчик, потом данные, потом снова счётчик. Если значения совпали, - данные верны(13.10.2014 12:58, )