Du kan prøve at kigge på coroutiner:
http://www.boost.org/doc/libs/1_57_0/libs/coroutine/doc/html/index.htmlSom eksempel skal opgaverne finde ud af om nogle binaere traeer er balancerede eller ubalancerede. Til det bliver man naesten noedt til at lave en recursive soegning.
En løsning med rekursive funktionskald er helt klart den nemmeste løsning at forstå, men det kan godt gøres på en anden måde. Man kunne gøre call-stacken explicit, dvs. gemme de knuder man mangler at besøge i en stak-datastruktur (som kun behøver at være log(n) dyb). Men det vil ikke hjælpe dig med andre opgaver.
Med andre ord, I det store hele saa skal man altsaa lave et single-threaded system som kan udfoerer opgaver (asynkronisk) uden at blokere systemet paa noget tidspunkt.
Lyder som om at preemptive multitasking med tråde er nemmere end at skulle garantere alle sin små-opgaver ikke bruger for lang tid. Eventuelt justere trådes prioritetsniveau sådan at dine opgaver har lavere priority end hvad systemet som ikke må blokeres på noget tidspunkt.