-
- "сюрпризов не принесёт" - если написана без ошибок. ИМХО код каждой отдельно взятой задачи гораздо боле читаем чем нагромождения конечных автоматов, и ошибку в ём видно за километр. - Cидopгeк(21.10.2019 08:33)
- Ровно наоборот. Конечные автоматы подразумевают ЯВНОЕ выделение всех возможных состояний программы (как множества состояний системы взаимосвязанных автоматов) и ЯВНОЕ определение событий ведущих к смене состояний, а так же ЯВНОЕ выделение действий fk0легенда(2071 знак., 21.10.2019 22:37)
- про стек отвечу просто - мне кроме memcpy да memset из стандартной библиотеки ничего не требовалось вообще. ну математика была нужна. sin cos pow tan sqrt и тому подобное. malloc`ов тоже небыло. соответственно ни утечек памяти, ни отказа в её Mahagam(174 знак., 21.10.2019 23:26)
- Как запустить параллельную систему КА написано у Шалыто лет 20 тому назад. Впрочем и самому додуматься можно. Тема уже изъезженная вдоль и поперёк. Там другая существенная проблема: большая латентность. Я поэтому, где-то ниже по теме, и предлагаю fk0легенда(1021 знак., 22.10.2019 10:46)
- походу, тему настолько уже изъездили вдоль и поперёк, что особо ничего кроме вытесняющей многозадачности и не предлагается на рынке. все эти CTLи, FreeRTOSы, uCOSы, eCOSы и иже с ними - одной жопы ягодицы. - Mahagam(22.10.2019 14:16)
- Какая вообще связь многопоточности и автоматного программирования? Одно не является противопоставлением другому, для начала. Система автоматов может существовать и в многопоточной системе, равно как и классический говнокод в однозадачной системе. fk0легенда(352 знак., 23.10.2019 00:19)
- я не в курсе много чего. с теоретической подготовкой у меня плоховато, к сожалению. и я даже не представляю, как написать многоавтоматную программу с требованиями реалтаймовости без использования вытесняющей многозадачности. зато с этой самой Mahagam(387 знак., 23.10.2019 01:21)
- Я научу :) В прерывание по таймеру (и/или основной цикл) ... дальше продолжать? ... , включаются функции сервиса каждого автомата, в которой анализируются входные данные и принимается решение о смене состояния автомата и управлении другими VLLV(229 знак., 23.10.2019 03:29)
- а если внутри сервиса - тоооолстое вычисление? постоянно думать "а не пролюблю ли я прерывание?". или как? - Mahagam(23.10.2019 12:52)
- Если ОДНО толстое вычисление, то оно ставится в основной цикл. Тема двух и более долгоиграющих вычислений уже раскрыта выше. - VLLV(23.10.2019 13:52)
- а почему прерывание можно пролюбить ? если при вычислении пришло прерывание, зашли в него, поставили в очередь задачу на обработку и пошли дальше считать, по завершению вычислений обработали прерывание. Это если тайминг отработки прерывания не Aleksey_75(69 знак., 23.10.2019 13:02)
- получается кооперативная переключалка с отложенными вычислениями. это пишется более сложно, чем вытесняющая многозадачность. - Mahagam(23.10.2019 13:05)
- да гдеж сложность то ? у меня такая переключалка (хоть по таймеру, хоть по завершению предведущей задачи) занимает ~200 строк кода с бооольшими отступами (люблю я так на код смотреть))) - Aleksey_75(23.10.2019 13:07)
- Буря в стакане. Большинство задач достаточно тривиальны, их можно решить множеством разных способов, кто как привык. Если задача нетривиальна, можно подбирать более удобный инструмент. Обобщения тут не очень уместны, КМК. - SciFi(23.10.2019 13:07)
- получается кооперативная переключалка с отложенными вычислениями. это пишется более сложно, чем вытесняющая многозадачность. - Mahagam(23.10.2019 13:05)
- Это разве не кооперативный планировщик называется? - ant333(23.10.2019 07:33)
- Это классический биглуп :) - Ruslan(23.10.2019 10:57)
- Без переключения контекста? Не знаю, но это точно не RTOS - VLLV(23.10.2019 09:08)
- а если внутри сервиса - тоооолстое вычисление? постоянно думать "а не пролюблю ли я прерывание?". или как? - Mahagam(23.10.2019 12:52)
- Я научу :) В прерывание по таймеру (и/или основной цикл) ... дальше продолжать? ... , включаются функции сервиса каждого автомата, в которой анализируются входные данные и принимается решение о смене состояния автомата и управлении другими VLLV(229 знак., 23.10.2019 03:29)
- я не в курсе много чего. с теоретической подготовкой у меня плоховато, к сожалению. и я даже не представляю, как написать многоавтоматную программу с требованиями реалтаймовости без использования вытесняющей многозадачности. зато с этой самой Mahagam(387 знак., 23.10.2019 01:21)
- Какая вообще связь многопоточности и автоматного программирования? Одно не является противопоставлением другому, для начала. Система автоматов может существовать и в многопоточной системе, равно как и классический говнокод в однозадачной системе. fk0легенда(352 знак., 23.10.2019 00:19)
- походу, тему настолько уже изъездили вдоль и поперёк, что особо ничего кроме вытесняющей многозадачности и не предлагается на рынке. все эти CTLи, FreeRTOSы, uCOSы, eCOSы и иже с ними - одной жопы ягодицы. - Mahagam(22.10.2019 14:16)
- Как запустить параллельную систему КА написано у Шалыто лет 20 тому назад. Впрочем и самому додуматься можно. Тема уже изъезженная вдоль и поперёк. Там другая существенная проблема: большая латентность. Я поэтому, где-то ниже по теме, и предлагаю fk0легенда(1021 знак., 22.10.2019 10:46)
- про стек отвечу просто - мне кроме memcpy да memset из стандартной библиотеки ничего не требовалось вообще. ну математика была нужна. sin cos pow tan sqrt и тому подобное. malloc`ов тоже небыло. соответственно ни утечек памяти, ни отказа в её Mahagam(174 знак., 21.10.2019 23:26)
- Хм, стало быть КА не имеют права на жизнь без RTOS. Зачем тогда они существуют? В моем понимании, именно из-за понятной логики переходов, в отличие от кода с множеством флагов. Может, лучше высыпаться, а не постить спорные вещи в злобе? ;) - VLLV(21.10.2019 08:57)
- Логика переходов в КА понятна ровно до того момента, пока в эту логику не пытаешься впихнуть ожидание кучи разных событий неблокируемым способом, после этого логика превращается в "тыкву", которую хрен поймёшь. ОСь позволяет неблокируемость =AlexD=(143 знак., 21.10.2019 11:48)
- От "впихивания ожидания кучи событий" логика КА не разваливается. Просто автомат разрастается до очень большого числа состояний. На самом деле, "куча событий", как мне думается, подразумевает систему параллельных автоматов, где каждый работает fk0легенда(152 знак., 21.10.2019 22:42)
- Не понимаю я вот этого противопоставления потоки vs КА. КА внутри потоков работающие строго по блокируемым системным вызовам - наш путь, не? - =AlexD=(22.10.2019 06:10)
- Да, примерно об этом я и думаю. Что систему КА можно запускать параллельно, на пуле потоков, по выбирая готовые к запуску по мере наличия интересующих конкретные КА событий (это важный момент, т.к. планировщик избавляет от важной проблемы Big fk0легенда(3286 знак., 22.10.2019 11:16)
- Ага. и называется кооперативная ОС. В минимально возможном варианте, как я понял. - symbions(22.10.2019 07:46)
- Не понимаю я вот этого противопоставления потоки vs КА. КА внутри потоков работающие строго по блокируемым системным вызовам - наш путь, не? - =AlexD=(22.10.2019 06:10)
- Совершенно неочевидное утверждение. К вершине графа состояний сколько угодно ребер подходить может, откуда там сразу тыква? - s_h_e(21.10.2019 12:16)
- Вы говорите об автомате уровнем выше. Вместо переключения контекста с помощью ОС он может принудительно менять состояние управляемого автомата. VLLV(568 знак., 21.10.2019 12:11)
- PT_WAIT_UNTIL(pt, condition1() && condition2() && condition3()); - SciFi(21.10.2019 11:56)
- Для контроллера
курятникаумного дома - отличный вариант. - =AlexD=(22.10.2019 06:12)- Это старопердунизм :-) - SciFi(22.10.2019 09:52)
- +1 - evgeniy1294(21.10.2019 11:58)
- Для контроллера
- От "впихивания ожидания кучи событий" логика КА не разваливается. Просто автомат разрастается до очень большого числа состояний. На самом деле, "куча событий", как мне думается, подразумевает систему параллельных автоматов, где каждый работает fk0легенда(152 знак., 21.10.2019 22:42)
- Логика переходов в КА понятна ровно до того момента, пока в эту логику не пытаешься впихнуть ожидание кучи разных событий неблокируемым способом, после этого логика превращается в "тыкву", которую хрен поймёшь. ОСь позволяет неблокируемость =AlexD=(143 знак., 21.10.2019 11:48)
- Ровно наоборот. Конечные автоматы подразумевают ЯВНОЕ выделение всех возможных состояний программы (как множества состояний системы взаимосвязанных автоматов) и ЯВНОЕ определение событий ведущих к смене состояний, а так же ЯВНОЕ выделение действий fk0легенда(2071 знак., 21.10.2019 22:37)
- "сюрпризов не принесёт" - если написана без ошибок. ИМХО код каждой отдельно взятой задачи гораздо боле читаем чем нагромождения конечных автоматов, и ошибку в ём видно за километр. - Cидopгeк(21.10.2019 08:33)