Функции, как правило, и всегда в C / C ++, являются атомными вычислительными единицами. То есть после вызова они не могут быть приостановлены , однако вы можете приостановить выполнение потоков. Таким образом, возможный обходной путь к тому, что вы хотите, может состоять в том, чтобы выполнить вашу функцию в своем собственном потоке и приостановить ее, но как только вы приостановите ее, вы не сможете возобновить ее из функции, так как она приостановлена. Вам понадобится какой-нибудь контроллер для приостановки и возобновления функций, вам неизбежно придётся кодировать планировщик потоков более или менее похожим на то, что есть в операционных системах.