C++调用函数指针

C++ Calling function pointers

本文关键字:指针 函数 调用 C++      更新时间:2023-10-16

我有一个回调函数系统来组织引擎的初始化和运行时进程。我有一个管理所有这些函数指针的类,它们存储在STL向量容器中。它们是通过包装类调用的,比如(*迭代器)->execute();

当我调用这些指针时,我会在for循环中执行。因此,如果我注册了20个函数指针,它将遍历所有20个指针,找到匹配的类型,并通过包装类调用函数。

我的问题是,当调用指针函数时,循环是等待该函数结束执行,然后继续循环,还是在第一个函数运行时循环继续调用函数?请注意,这一切都发生在同一条线上。

我做了一些测试,在执行其他函数时,循环似乎不会暂停。这看起来像是某种伪线程。。。这似乎不对。然而,结果可能不正确,因为我使用std::cout将结果打印到控制台,所以我不知道这是否是由于我不知道的一些ostream功能造成的。

当调用指针函数时,循环是等待该函数结束执行然后继续循环,还是在第一个函数运行时继续调用函数?

在这方面,通过指针的调用与命名函数的调用没有什么不同:它们都同步完成,即调用者等待函数返回。

最可能的原因与控制台缓冲信息有关,这可能会导致显示排队内容的显著延迟。

for循环和使用函数指针不会创建线程。调用flush,您将看到已排队的文本。您也可以使用调试器来跟踪正在发生的事情。