Vit (26.12.2011 23:44, просмотров: 220) ответил mazur на Народ, объясните, пожалуйста, на русском, желательно поподробнее, что такое Protothreads?
Лучше было бы по-английски. Там очень просто. С помощью маленького хака (оператора switch языка Си) можно выйти из функции с запоминанием "места выхода", а при следующем вызове почти сразу попасть на следующий оператор после "места выхода". http://www.chiark.greenend.org.uk/~sgtatham/coroutines.html
В функции или вне её заводится переменная состояния, перед выходом из функции ей присваивается новое значение-константа, такое же значение вписывается в метку переключения (в Си это s = N; return; case N: ;). Эта переменная не должна портиться между вызовами функции. В protothreads она заводится во внешней переменной - членом структуры. Ничего не мешает объявить её просто статической переменной (учи Си:)) в теле функции. В protothreads оно снабжено кучей обёрток для различных случаев.