А выполнение этих функций может быть параллельным? Если да, то
проще каждую из этих функций организовать как отдельный поток. Если
накладно по ресурсам, то в "потоке-исполнителе" организовать эти
ф-ции как протопотоки. В обоих случаях как будто имеется
возможность штатного (средствами ОС или protothreads)
останова/запуска ф-ций.