Борис Рюмшин писал(а):
Формально то вывести сущность можно, чтобы что-то явно указывать при программировании. Но надо понимать, что модель выполнения это всё равно никак не изменит. Любое синхронное обращение, ну например, к ресурсу NFS, который отвалился, и всё, приплыли. Короче, гарантий никаких не будет.
Не совсем.
У меня есть опыт работы в строго "однопоточных" средах с собственным "планировщиком задач" во встраиваемых системах, где одновременно работают сотни "активных объектов" и работают они с кучей интерфейсов и служб.
Да, там - "немного" отличающиеся парадигмы и подходы к ПРОЕКТИРОВАНИЮ систем, но, в целом, они получаются даже проще и понятней тех, что основываются, например на pthreads. При этом, они ещё и "отзывчивей"/"реактивней" могут получиться!
По нескольким причинам:
1) механизм "планирования" проектируется не из "общих абстрактных соображений", а учитывает специфику работы системы
2) "элементы синхронизации" исполнения активностей объектов ("потоков") - прост, ясен и лёгок в реализации. И - полностью подконтролен.
3) нет потерь на сохранении/восстановлении контекстов исполнения. Кроме того, по сравнению с многопоточным подходом, он занимает, часто, на порядки меньше памяти (по сути на все "потоки" работает один и тот же стек).
4) единственный "тонкий нюанс" (особенно - для систем, работающих на "голом железе") - реакция на прерывания от интерфейсов и (хардовых)таймеров. Но это - естественный и, часто, единственный "нюанс" требующий повышенного внимания при проектировании и аккуратности при реализации.
5) отдельный вопрос - по дисциплине и подходам к "параллельно исполняющимся" активностям/потокам/задачам. Там есть два кардинально различающихся подхода: 1) классические обработчики состояний конечных автоматов, обрабатывающих поток событий и 2) система общей "псевдопоточности", когда нет строгой привязки к реализации в виде КА.
В любом случае, написано достаточно много реализаций "сред исполнения", как над многопоточными ОСями, так и над голым железом с "однопоточными" вариантами пользовательской части систем. Системы, в том числе, и жёсткого РВ (в том числе и - для авиакосмоса).
В качестве "мозгового упражнения" (с последующими случаями применения полученных результатов в реальных проектах) был написан универсальный вариант библиотеки "эмулирующий" "однопоточный подход" в многопоточных исполняющих средах. Это упрощает анализ системы и повышает гарантированность надёжности её работы. Ну - просто потому, что такие системы проще.