我正在使用 gperftools 来分析我的 C++ 代码,最大的节点是__GI___poll
. 它由低级 Qt 和 OpenCL 代码(主要是 Qt)调用,因此从我自己的代码中删除了几个步骤。我的猜测是,这只是一个通用的“等待事件”功能,但我的搜索努力却白费了。
这个函数是什么,我的代码在这里花费了这么多时间,它可以说明什么?
我正在使用 gperftools 来分析我的 C++ 代码,最大的节点是__GI___poll
. 它由低级 Qt 和 OpenCL 代码(主要是 Qt)调用,因此从我自己的代码中删除了几个步骤。我的猜测是,这只是一个通用的“等待事件”功能,但我的搜索努力却白费了。
这个函数是什么,我的代码在这里花费了这么多时间,它可以说明什么?
为什么你的代码中有这个函数?
QCoreApplication::processEvents()
linux 上的调用又QEventDispatcherGlib::::processEvents()
调用 glib 的g_main_context_iteration()
. 如果事件被分派,此函数返回 true,否则它可以阻塞直到事件被分派。这可能意味着您正在手动旋转事件循环,该循环并没有做很多事情,而是在等待事件,并且您可能有一个正在运行的侧线程,其中正在发生实际的事情。