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

标签 c++ boost signals-slots

<分区>

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

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

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

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

最佳答案

首先,还是尝试使用 boost::signal。不要假设它不会足够快,直到你在你的应用程序的特定情况下尝试

如果效率不够高,可能类似于FastDelegate会满足您的需求吗? (我没有尝试过,但听说在某些 boost::signal 似乎不适合的情况下,这是一个很好的解决方案)。

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

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

相关文章:

c++ - linux中system()函数中waitpid()函数是如何实现的

c++ - 基于模板参数的模板参数的类特化

c++ - 自定义 QProcess 对象在返回前等待输出

multithreading - PyQt:如何将停止信号发送到对象正在运行有条件的 while 循环的线程?

c++ - 使用 Boost 库 (C++) 的简单选项处理

c++ - 模板可变参数和显式实例化

c++ - 如何为 C++ 项目编写构建脚本

c++ - 带 bo​​ost::atomic 的无锁队列——我这样做对吗?

c++ - boost::shared_ptr 断言错误与 boost::asio:io_service

qt - 如何使用 QPushButton 获得 toggled() 信号?