Mahagam (24.07.2013 12:56, просмотров: 383) ответил SciFi на Давно холиваров не было. Как насчёт RTOS vs Main Loop? Поделитесь практическим опытом. Сам RTOS не применял, да и не очень хочется.
со своей колокольни: - RTOS отъедает память на стеки потоков.
да. отъедает. и это ограничивает сферу применения в контроллерах с малой рамой. но всегда можно посмотреть сколько рамы жрётся и выделить минимум. хоть это и трудозатраты
- RTOS позволяет писать код для длительных процессов линейно. Должно быть, это удобно.
это офигенно удобно! новая отдельная подзадача? ну так запихиваем её в отдельный поток, оборачиваем в while (1) {...} и всё. оно исполняется. а внутри можно ставить тьму пауз и задержек! при этом другие потоки не паузируются и не задерживаются.
- Main Loop тоже позволяет делать линейный код (protothreads), но это как бы костыль и не очень красиво.
и тоже добавляет ограничений в код.
- RTOS требует синхронизации между потоками: всякие там мутексы, семафоры, дедлоки и прочее. Геморрой.
успокойтесь, синхронизации требуют только зависимые между собой процессы. в биглупе тоже самое ж, только без системных средств, там просто пишутся велосипеды.
- Main Loop требует синхронизации только между обработчиками прерываний и главным потоком. Это проще.
а между главным потоком и вызываемыми функциями?
- Переносимость: Main Loop проще, поэтому и переносится легче.
только писать под него сложнее.