Форум
C/C++
Тема
Как правильно задавать вопросы
B
I
abc
U
X
3
X
3
H1
H2
H3
H4
H5
H6
Asm
C/C++
C#
Erlang
Haskell
IDL
Java
Lisp
MSIL
Nemerle
ObjC
OCaml
Pascal
Perl
PHP
Prolog
Python
Ruby
Rust
SQL
VB
Здравствуйте, landerhigh, Вы писали: L>Здравствуйте, so5team, Вы писали: L>>>Так пример привели. И не один S>>Ни одного нормального пока не видел. Особенно если вспомнить про вложенные состояния для КА, обработчики входа/выхода и пр. лабуду. L>"Вложенные состояния" есть ни что иное, как еще один КА: L>[ccode] L>#include <generator> L>#include <iostream> L>#include <string> L>#include <ranges> L>std::generator<std::string> nestedState(const int& param) { L> while (param < 7) L> { L> if (param%3 == 0) L> { L> co_yield "Divisible by 3"; L> } L> else if (param%2 == 0) L> { L> co_yield "Even"; L> } L> else L> { L> co_yield "--"; L> } L> } L>} L>std::generator<std::string> runMachine(const int& param) { L> co_yield "Idle"; L> co_yield "Started"; L> co_yield "Processing"; L> for (const auto& state: nestedState(param)) L> { L> co_yield " Nested: " + state; L> } L> co_yield "Stopped"; L>} L>int main() { L> int iValue = 0; L> for (const std::string& state : runMachine(iValue)) L> { L> ++iValue; L> std::cout << "State: " << state << std::endl; L> } L>} L>[/ccode] L>[code] L>State: Idle L>State: Started L>State: Processing L>State: Nested: Divisible by 3 L>State: Nested: Even L>State: Nested: -- L>State: Nested: Divisible by 3 L>State: Stopped L>[/code] L>"Обработчики входа и выхода и пр. лабуду" не распарсил. L>>>С точки зрения обсуждаемой темы (запись асинхроного автомата в виде синхронного кода) единственное преимущество стековых корутин в том, что собственно код алгоритма будет написан вообще без co_yield, так yield будет вызываться внтури собственно кода который оборачивает I/O (где, собственно, асинхронность и возникает). S>>Именно. L>Это "удобство" перекрывается тем, что переключение контекста стековой корутины намного дороже. Ну и тем, что их в стандарт, к сожалению, не завезли.
Теги:
Введите теги разделенные пробелами. Обрамляйте в кавычки словосочетания с пробелами внутри, например:
"Visual Studio" .NET
Имя, пароль:
Загрузить
Нравится наш сайт?
Помогите его развитию!
Отключить смайлики
Получать ответы по e-mail
Проверить правописание
Параметры проверки …