Цитата(vshemm @ Jun 17 2008, 19:40)

Видимо, подобные "извращения" языка С, которые используют Protothreads, нарушают принцип Keep It Simple, Stupid

Всего-то делов: признать, что тред - такой же примитив программы, как циклы или switch.
Было бы
Код
thread
{
statement1;
statement2;
...............
statementN;
}
Рассматривалось бы это как конструкция, в которой точка входа вначале указывала на statement1,
затем при последующем входе - в зависимости от выполнения операторов break и continue.
Так, break позволял бы выйти из треда без переопределения точки входа, а continue - выйти из треда, но в следующий раз точка входа была бы оператором, следующим за continue. Причем, если break и continue - последние в блоке операторы, точка входа устанавливается опять на statement1, а если break первый - имеем пустой тред.