C ++调用函数指针

时间:2012-04-02 21:13:58

标签: c++ callback functor ostream

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

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

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

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

2 个答案:

答案 0 :(得分:2)

  

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

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

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

答案 1 :(得分:2)

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