Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/140.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;调用函数指针_C++_Callback_Functor_Ostream - Fatal编程技术网

C++ C++;调用函数指针

C++ C++;调用函数指针,c++,callback,functor,ostream,C++,Callback,Functor,Ostream,我有一个回调函数系统来组织引擎的初始化和运行时进程。我有一个类管理所有这些函数指针,它们存储在STL向量容器中。它们是通过类似(*iterator)->execute()的包装类调用的 当我调用这些指针时,我在for循环中执行它。因此,如果我注册了20个函数指针,它将遍历所有20个,找到匹配的类型,并通过包装器类调用函数 我的问题是,当调用指针函数时,循环是等待该函数结束执行,然后继续循环,还是在第一个函数运行时循环继续调用函数?请注意,这一切都发生在同一条线上 我做了一些测试,似乎循环在执行其

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

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

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

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

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

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

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

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

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


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

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

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

如果您可以发布一些代码,会更容易些吗?但是,for循环将等待每个函数完成,然后再调用下一个函数。其中一个函数可能会产生一个线程,这很可能是因为您没有使用每个std::cout刷新流。您是用std::endl还是用“\n”终止线路?请使用某种全局变量进行检查,每次调用都要根据该变量进行检查?如果你的代码不是异步的,这种行为就不应该发生。我认为,你需要一个拥有计算机科学学位的人;-)-受害者似乎是流,除非您的函数指针正在工作队列或其他地方发布工作,但即使在这种情况下,函数也会很快返回。如果您可以发布一些代码,会更容易吗?但是,for循环将等待每个函数完成,然后再调用下一个函数。其中一个函数可能会产生一个线程,这很可能是因为您没有使用每个std::cout刷新流。您是用std::endl还是用“\n”终止线路?请使用某种全局变量进行检查,每次调用都要根据该变量进行检查?如果你的代码不是异步的,这种行为就不应该发生。我认为,你需要一个拥有计算机科学学位的人;-)-受害者似乎是流,除非您的函数指针正在工作队列或其他地方发布工作,但即使在这种情况下,函数也会很快返回。