【发布时间】:2012-04-16 13:19:24
【问题描述】:
我有一个回调函数系统来组织我的引擎的初始化和运行时过程。我有一个管理所有这些函数指针的类,它们存储在 STL 向量容器中。它们通过包装类调用,例如 (*iterator)->execute();
当我调用这些指针时,我会在 for 循环中进行。因此,如果我注册了 20 个函数指针,它将遍历所有 20 个并找到匹配的类型并通过包装类调用函数。
我的问题是,当调用指针函数时,循环是等待该函数结束执行然后继续循环,还是在第一个函数运行时循环继续调用函数?请注意,这一切都发生在同一个线程上。
我做了一些测试,似乎循环在执行其他功能时没有暂停。这似乎是某种伪线程? ……这似乎不对。但是,结果可能不正确,因为我使用 std::cout 将结果打印到控制台,所以我不知道这是否由于我不知道的某些 ostream 功能而发生。
【问题讨论】:
-
如果你能发布一些代码会更容易吗?但是,
for循环将在调用下一个函数之前等待每个函数完成。不过,其中一个函数可能会产生一个线程。 -
这很可能是因为您没有使用每个 std::cout 刷新流。您是用 std::endl 还是用 "\n" 终止行?
-
使用某种全局变量来检查它,每次调用都要检查?如果您的代码不是异步的,则不应发生此行为。
-
我认为,你需要一个拥有 Comp Science 学位的Exorcist ;-) - 受害者似乎是 Stream,除非你的函数指针在工作队列或其他东西上发布工作,但是即使在这种情况下,函数也会快速返回。
标签: c++ callback functor ostream