Qt和LibEvent中信号和插槽之间的差异

时间:2017-11-27 04:52:55

标签: c++ qt networking io libevent

对于某人来说,这可能是一个非常奇怪的问题,但是Qt和LibEvent库中的信号和插槽系统有什么区别?因为它们似乎都用于类似的东西。

如果我已经在Qt中有信号和插槽,为什么我需要使用LibEvent?什么是更好地用于管理大量的网络连接以及如何?例如。我需要通过TCP服务器在SSL中使用LibEvent或信号和插槽。

1 个答案:

答案 0 :(得分:1)

Qt signal / slot和libevent都依赖于回调,而它们的机制和用例却大不相同。

Qt插槽是普通功能。虽然Qt siganl基本上是回调的容器,但是您可以像std::list<CALLBACK_FUNC>一样对其进行映像。 在“发射”信号时,实际上是直接从“发射”调用每个插槽功能。 Qt信号/插槽基于c / c ++函数指针和运行时typeinfo(由mocQ_OBJECT魔术生成), 并可以用于连接任何C ++类实例。

Libevent回调从事件循环中调用,通常您不希望直接调用它们。 而且libevent回调用于预定义的“事件”,您不能将它们用于一般目的。

如果您打算通过网络通信实现Qt应用程序,我建议您可以使用与Qt事件循环良好集成的Qt ockocks。