Un protothread este o unitate de procesare software furnizată de un software special care vă permite să nu utilizați mecanismele de threading ale sistemului de operare , una dintre formele de implementare a coroutinelor .
Funcționând ca fire de execuție „ușoare” care nu folosesc stiva , protothread-urile oferă un context de blocare cu prețul risipei de octeți de memorie per fir. Deoarece protothread-urile nu folosesc stiva, trebuie să utilizați variabile globale pentru a salva valorile prin comutatoarele de context [1] . Protothread-urile sunt nepreemptable, astfel încât schimbarea contextului este posibilă numai în operațiunile de blocare.
Conceptul de protoflow a fost dezvoltat de Adam Dunkels și Oliver Schmidt [2] . Au fost implementate mai multe biblioteci protothreading diferite pentru C și C++ .