Подумалось внезапно - а в какой момент и почему так получилось, что практически все современные языки пришли к промисам и сабжу для записи параллельного кода? До этого момента какие только извращения не бытовали: конечные автоматы, файберы, green threads (включая чудо нанотехнологий поверх duff device под названием protothreads), просто ад
(
Read more... )
Reply
switch(state) {
case 0: do_this(); nextstate = 1; break;
case 1: do_that(); nextstate = 2; break;
....
}
return nextstate;
никакие дополнительные возможности не нужны, наоборот, поверх этого можно реализовать всё что угодно. Только неудобно.
Reply
Reply
Reply
Reply
Reply
Так вот - в таком случае плодить конечный автомат смысла нет - выигрыша по времени ты не получишь. Но, зато усложнишь сам автомат и создашь потенциальную ошибку. Проще подождать кода ответа, заморозив на это время процесс.
Reply
Reply
Reply
А с лампочкой и стеком это как раз контрпример :) там будет M+N состояний, причём независимых:
update_stack(m_state);
update_led(n_state);
update_input(k_state);
....
как это в 90% реальных систем и работает, собсно. Другое что переписать какой-нибудь нетривиальный алгоритм в виде стейт-машины - процесс КРАЙНЕ подверженный ошибкам.
Reply
Leave a comment