Un protothread es una unidad de procesamiento de software proporcionada por herramientas de software especiales que le permiten no utilizar los mecanismos de subprocesamiento del sistema operativo , una de las formas de implementar corrutinas .
Al operar como subprocesos "ligeros" que no usan la pila , los protothreads proporcionan un contexto de bloqueo a costa de leer bytes de memoria por subproceso. Debido a que los protothreads no usan la pila, debe usar variables globales para guardar valores en los cambios de contexto [1] . Los protothreads no son prioritarios, por lo que el cambio de contexto solo es posible en operaciones de bloqueo.
El concepto de protoflujos fue desarrollado por Adam Dunkels y Oliver Schmidt [2] . Se han implementado varias bibliotecas de protothreading diferentes para C y C++ .