Comments 10
Выкапывание картошки асинхронно по отношению к написанию статьи вообще независимо ни от чего, так как они не требуют синхронизации между собой. При этом они могут выполняться параллельно или нет (по очереди).
Выкапывание картошки скорее, конкурентно, а не параллельно, но это вопрос терминологии, от меня плюс
Сильно в дебри не зашли. Конечно же стоит продолжить изложение этих идей. По ощущениям вы приближаетесь к описанию операционной системы реального времени, либо неких самопальных планировщиков задач. Мне лично интересно почитать о подходах в программировании и держать руку на пульсе, проверить самого себя, насколько "адекватно" я всё организую в своих проектах и не забрел ли я там в дебри.
Пишите продолжение :)
Ожидал увидеть код Rust
У него хорошо получается async in embedding
Лучше чем на Си
А чем лучше то? Один фиг важно обеспечить правильную последовательность обращений к памяти (атомарность) в коде работающем в прерываниях или асинхронных тасках в контексте ОСРВ, что зависит от архитектуры железа (DMB и т.п. в ARM например), что и в Си спокойно реализуется.
Лучше тем, что в языке есть async, причём не прибитый гвоздями, а с возможностью кастомной реализации планировщика, чем и воспользовались embassy.dev
Лучше тем, что легче, меньше кода и полностью пропадает нужна в ОСРВ. А раз нет ОСРВ, то бинарник меньше, а прерывания он обрабатывает быстрее.
loop {
// Timekeeping is globally available, no need to mess with hardware timers.
led.set_high();
Timer::after_millis(150).await;
led.set_low();
Timer::after_millis(150).await;
}
Жду продолжения
Про асинхронное программирование микроконтроллеров и программирование аппаратных функций периферии процессора