Comments 18
Я прошу прощения, но protothreads — это жуткое, грязное, страшное извращение, опасное, неудобное и неотлаживаемое, как и вся макросная магия в C, которое нельзя использовать ни в коем случае.
+6
Разве конструкция case может разрывать цикл?static char example(struct pt *pt) { switch(pt->lc) { case 0: while(1) { pt->lc = 12; case 12: if(!(counter == 1000)) return 0; printf("Threshold reached\n"); counter = 0; } } pt->lc = 0; return 2; }
+1
Device в Duff's device это все-таки «прием» (как, например, rhetorical device — риторический прием), а не «устройство».
+1
Машины состоянний, многозадачность на switch (а-ля protothreads), или с помощью проверки флагов очень востребована. Встраиваемые системы, микроконтроллеры, даже оконная функция в виндах это один большой swithc, обрабатывающий события.
Почему же за пол-века эволюции языков программирования ни в одном из них не ввели поддержку машин состояний или легковесных потоков?
p.s.
В ADA есть task (на на МК, по-видимому, не работают)
В C# есть yield
Но это все сделано совсем недавно.
Почему же за пол-века эволюции языков программирования ни в одном из них не ввели поддержку машин состояний или легковесных потоков?
p.s.
В ADA есть task (на на МК, по-видимому, не работают)
В C# есть yield
Но это все сделано совсем недавно.
0
Sign up to leave a comment.
Protothread и кооперативная многозадачность