我想在不使用 QT 的项目中使用信号/插槽库。我有非常基本的要求:
- 用任意数量的参数连接两个函数。
- 信号可以连接到多个插槽。
- 手动断开信号/插槽连接。
- 不错的性能 - 应用程序是基于帧的(即不是基于事件的),我想在每个帧中使用连接。
我读过 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/