我应该选择哪一个C ++的信号/槽库
发布网友
发布时间:2024-05-06 23:08
我来回答
共1个回答
热心网友
时间:2024-06-02 11:42
1. 首先,尝试用升压::信号反正。这样做,直到你在特定的情况下,也就是你的应用程序尽量不要它不会足够快 如果这还不够高效,也许像的FastDelegate将满足您的需求? (我did'nt尝试它,但听说这是在案件一个很好的解决方案,其中的boost ::信号似乎不适合)。 无论如何,如果在你的每一个信号它可能是值得用更简单更换信号系统,就像一个容器,容纳的对象/仿函数将被调用每个信号更提出,让“事件”比作一个循环周期动态(让改变调用的每个函数 (我有我自己的解决方案,我在和比如我已经与性能没有问题,所以也许类似可能有所帮助)。
2. 在窗体上非常非常快的事件库 如果在分析代码我会一直 工作在最近,我很惊讶 并遗憾地看到的boost ::信号 功能浮到顶部。为 那些你们谁都不知道, 增加::信号是 信号/槽库,它可以 旁边的boost ::绑定的 基于委托的事件处理,如 人们看到在C#。这是 多特征的,有弹性。同时,这也是 我已经学会了,令人难以置信, 可怕缓慢。对于很多人 增加::信号,这是好的 他们所谓的事件很少。 我每叫几个事件 每个对象,其结果可想而知。 所以,我写我自己。略显不足 灵活富有特性。这是 如何每个人都趋于优化 事件。和事件 调用是15到80 比的boost ::信号,定位更快。 见链接
3. 你列出的两个是仅有的两个价值,而我所知道的。我所看到的一切已经表明libSigC来做相同的++现身于顶级性能明智的。正如你所看到的有些情况下升压的语法是有点漂亮,但只是一点点。 我已经libSigC来做相同的++和感到高兴。 libSigC来做相同的++似乎被大大更多的项目。快速浏览一下在我的包管理器列出了100多个项目依赖于libSigC来做相同的++2。这本身就足以在我看来,倾斜的平衡尤其是考虑到性能上的优势,以及缺乏其他显著的差异。 我说libSigC来做相同的++2。
4. 我会投票给Sigslots,我已经尝试了一些其他的替代品(升压,libsig ++,FastDelegates),并没有做到这正是我想要的:具有自动对物体毁灭断开功能结合在一起的一种方式。 Sigslots是伟大的,是完全可读的C ++,它是快速,简单,做这项工作没有得到的方式.a个小东西,如果你从几个图书馆想要它,你可能需要添加:COREEXTERN template class COREIMPEXP has_slots<SIGSLOT_DEFAULT_MT_POLICY>;
为了避免已定义对象相关联的问题。
5. 我libSigC来做相同的++之前,这是非常简单的。我不认为这会有很大的性能损失的方式,事实上,我学会了槽,而不是函数指针在几个地方。 有一点要注意的是,作为最后它(2 +年前)的,它被限制在一个最大的6通过连接传递。 我没有用boost库的经验,所以我不能帮助你。
6. 我libsig ++,但我已经读了起来。我用信号和槽的经验是从Qt和从升压一点。如果你没有对他们有任何可用的,那么你可以尝试一下我自己的信号和槽库(ksignals)(在连接时分配)存在既为嵌入式代码(不分配)和“正常”的c ++代码。 您可以在以下网址找到它: 在该页面中,您还可以找到KSignals比升压信号。 速度老虎钳ksignals是非常快速和轻量级的代码明智的。应该很容易理解,如果需要修改它。 好运 问候 谢尔・ħ
7. 还有一个SIG槽来考虑: 它不会假装自己是最好的之一,但仍然,另外一个它有其存在的权利。