c++ - 一个事件系统——就像 Qt 中的信号/槽,没有 fork ——C++

标签 c++ qt fork design-principles

我想知道如何设计一个系统,它可以提供一个可靠的框架来处理信号以及信号/s 和方法/s 之间的连接,而无需编写一个非常令人不快的循环,一遍又一遍地迭代一些语句 fork 应用程序的流程。

换句话说,我想知道 Qt 或类似的信号槽机制背后的理论。

我命名 Qt 没有特别的原因,它可能只是最常用和经过良好测试的库之一,因此它是 C++ 世界中的引用,但任何关于这种机制设计的想法都会很好。

谢谢。

最佳答案

在高层次上,Qt 的信号/槽和 boost 的信号库的工作方式类似于 Observer Pattern (他们只是避免需要 Observer 基类)。

每个“信号”都会跟踪观察它的“插槽”,然后在发出信号时遍历所有“插槽”。

至于具体如何实现,C++和维基百科文章中的Java代码非常相似。如果您想避免为所有观察者使用一个接口(interface),boost 使用模板,而 Qt 使用宏和一个特殊的预编译器(称为 moc)。

关于c++ - 一个事件系统——就像 Qt 中的信号/槽,没有 fork ——C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13813808/

相关文章:

file - 如何在Qt中将文本文件打印到打印机?

c++ - 无法将 splitterChannel 与 poco 的高级 xml 配置一起使用

c++ - 零开销原则(如果有)有哪些重要异常(exception)?

Qt - Q_OBJECT 和宏

c - 防止孙子在 C 中 fork

c - 子进程是否可以获取其兄弟进程的 PID?

xcode - Xcode 如何在 Debug模式下跟踪子进程?

c++ - 为什么不允许将类成员定义的 `static` 关键字放在命名空间范围内?

c++ - 植绒算法在200个以上的物体上崩溃

c++ - QTextedit 设置 anchor 并滚动到它