c++ - 我应该选择哪个 C++ 信号/插槽库?

标签 c++ boost signals-slots

我想在不使用 QT 的项目中使用信号/插槽库。我有非常基本的要求:

  1. 用任意数量的参数连接两个函数。
  2. 信号可以连接到多个插槽。
  3. 手动断开信号/插槽连接。
  4. 不错的性能 - 应用程序是基于帧的(即不是基于事件的),我想在每个帧中使用连接。

我读过 comparison between libsigc++ and Boost.Signals .我还读到 Boost.Signals 性能不佳。但是,我知道还有其他库,但我仍然不确定应该选择哪个库。

对信号/槽库有什么建议吗?

最佳答案

首先,无论如何都尝试使用 boost::signal。在您尝试您的应用程序的特定情况之前,不要假设它不够快

如果它不够高效,也许像 FastDelegate会满足你的需要吗? (我没有尝试过,但听说在 boost::signal 似乎不适合的某些情况下这是一个不错的解决方案)。

无论如何,如果在您的应用程序中每帧都使用信号,则可能值得将信号系统替换为更简单的东西,例如保存将在每帧调用的对象/仿函数的容器。信号更多地允许即时“事件”管理,而不是使循环周期动态化(允许更改调用每个帧的函数)。 (我有 my own solution(更新:它现在非常古老且过时)我在游戏中大量使用它,例如我的性能没有问题,所以类似的东西可能会有所帮助。

关于c++ - 我应该选择哪个 C++ 信号/插槽库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/359928/

相关文章:

c++ - 你如何打印 std::regex?

c++ - 如何在 Xcode 项目中包含 C++ Actor Framework?

xcode - 在 MacOS Sierra 上找不到“openssl/conf.h”文件错误

c++ - 如果堆分配的对象被销毁并且指针被重新分配,Qt 的信号和槽系统会工作吗?

python - pyqt : How to use a same function to set text of different qt widget?

c++ - TBS.lib 调用 Tbsip_Submit_Command()

c++ - 编写表示该类型是 std::vector 的概念的惯用方式

c++ - Boost:spirit 解析成结构并重用它的一部分

c++ - 如何在不提供有效生成器的情况下告诉 boost::karma::rule 不消耗其属性?

python - QComboBox 在可编辑和使用模型时不发出信号