Представим, задача не выполнилась до конца в связи с тем, что какие то общие контейнеры были заняты, то мы идем делать другую работу, а потом какой нибудь поток возьмет эту задачу что мы не выполнили и пойдет вызывать ее методы последовательно, в каждой функции нужно создать некие подразделы которые можно отслеживать по битовому полю, мы проверяем, для текущего региона кода бит выставлен в 1 или 0, если 1, то значит нам не нужно этот участок кода уже выполнять - выполняем goto к второй части и так до тех пор, пока не дойдем до задачи где бит в 0, значит там мы и остановились - продолжить выполнение
Ну точно корутины