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

C++ 哪个C++;我应该选择信号/插槽库吗?,c++,boost,signals-slots,C++,Boost,Signals Slots,我想在不使用QT的项目中使用信号/插槽库。我有相当基本的要求: 使用任意数量的参数连接两个函数 信号可以连接到多个插槽 手动断开信号/插槽连接 性能良好-应用程序基于帧(即不基于事件),我希望在每个帧中使用连接 我读过一本书。我也读过这篇文章。信号的性能很差。然而,我知道还有其他的图书馆,我仍然不确定我应该选择哪个图书馆 对于信号/插槽库有什么建议吗?我以前使用过libsigc++,它非常简单。我认为这不会对性能造成太大的影响,事实上,我学会了在一些地方使用插槽而不是函数指针 需要注意的一点是,

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

  • 使用任意数量的参数连接两个函数
  • 信号可以连接到多个插槽
  • 手动断开信号/插槽连接
  • 性能良好-应用程序基于帧(即不基于事件),我希望在每个帧中使用连接
  • 我读过一本书。我也读过这篇文章。信号的性能很差。然而,我知道还有其他的图书馆,我仍然不确定我应该选择哪个图书馆


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

    我以前使用过libsigc++,它非常简单。我认为这不会对性能造成太大的影响,事实上,我学会了在一些地方使用插槽而不是函数指针

    需要注意的一点是,在我上次使用它时(2+年前),它最多只能通过连接传递六个参数


    我没有任何使用boost库的经验,因此我无法在这方面帮助您。

    我以前使用过libsigc++,而且非常简单。我认为这不会对性能造成太大的影响,事实上,我学会了在一些地方使用插槽而不是函数指针

    需要注意的一点是,在我上次使用它时(2+年前),它最多只能通过连接传递六个参数


    我没有任何使用boost库的经验,因此我无法在这方面帮助您。

    首先,无论如何,请尝试使用boost::signal。在您尝试您的应用程序之前,不要认为它不够快

    如果效率不够,也许类似的东西能满足你的需要?(我没有尝试过,但听说在boost::signal似乎不适合的情况下,这是一个很好的解决方案)

    无论如何,如果在应用程序中,每帧使用一个信号,可能值得用更简单的方法来替换信号系统,比如一个容器,其中包含将在每帧中调用的对象/函子。信号更允许即时“事件”管理,而不是使循环周期动态(允许更改称为每个帧的函数)。
    (我已经(更新:现在已经很古老了)我在游戏中大量使用,例如我的性能没有问题,所以也许类似的东西可以帮助我)。

    首先,无论如何,尝试boost::signal。在您尝试您的应用程序之前,不要认为它不够快

    如果效率不够,也许类似的东西能满足你的需要?(我没有尝试过,但听说在boost::signal似乎不适合的情况下,这是一个很好的解决方案)

    无论如何,如果在应用程序中,每帧使用一个信号,可能值得用更简单的方法来替换信号系统,比如一个容器,其中包含将在每帧中调用的对象/函子。信号更允许即时“事件”管理,而不是使循环周期动态(允许更改称为每个帧的函数)。
    (我在游戏中大量使用了(更新:现在已经非常古老了),例如,我对性能没有任何问题,所以可能类似的东西会有所帮助)。

    你列出的两个是我所知道的唯一值得一试的两个。我所看到的一切都表明libsigc++在性能方面是一流的。正如您在比较中看到的,在某些情况下,boost的语法稍微漂亮一点,但只是有一点

    我个人使用过libsigc++并对此感到满意。Libsigc++似乎被更多的项目使用。快速查看我的包管理器中列出了100多个依赖于libsigc++2的项目。在我看来,仅此一点就足以改变平衡,特别是考虑到性能优势和缺乏其他显著差异


    我说的是libsigc++2。

    你列出的两个是我所知道的唯一值得一提的两个。我所看到的一切都表明libsigc++在性能方面是一流的。正如您在比较中看到的,在某些情况下,boost的语法稍微漂亮一点,但只是有一点

    我个人使用过libsigc++并对此感到满意。Libsigc++似乎被更多的项目使用。快速查看我的包管理器中列出了100多个依赖于libsigc++2的项目。在我看来,仅此一点就足以改变平衡,特别是考虑到性能优势和缺乏其他显著差异

    我在Gamedev.net表单上说libsigc++2.

    当我分析一些代码时 最近在做这项工作时,我很惊讶 看到这些信号感到沮丧 浮动到顶部的函数。对于 你们这些不知道的人, 信号是一个非常有用的工具 可使用的信号/插槽库 绑定 基于委托的事件处理,例如 我们可以在C#中看到。它是健壮的, 特色鲜明,灵活多变。也是, 我学到了,难以置信, 慢得可怕。对很多人来说 谁使用boost::信号这很好 因为他们很少称之为事件。 我每帧调用几个事件 每个对象,具有可预测的结果

    所以我写了我自己的。稍少 灵活而有特色。它是 针对每个人倾向于 实际使用事件。和事件 调用是15到80次 比boost::信号更快

    请参阅Gamedev.net表单上的链接

    当我分析一些代码时 最近在做这项工作时,我很惊讶 看到这些信号感到沮丧 浮动到顶部的函数。对于 你们这些不知道的人, 信号是一个非常有用的工具 可使用的信号/插槽库 绑定 基于委托的事件处理,例如 我们可以在C#中看到。它是健壮的
    COREEXTERN template class COREIMPEXP has_slots<SIGSLOT_DEFAULT_MT_POLICY>;