我正在开发要在嵌入式Linux平台上运行的应用程序(C++与Qt结合使用,用于图形部分)。我需要知道如何将应用程序划分为不同的“核心”,每个核心分别负责应用程序的不同部分,从而提高应用程序本身的稳定性,效率和安全性。
我的疑问是:将功能划分为线程或 fork 不同的进程是否更方便?
让我提供一个应用程序的功能 View :有不同的用户界面,每个用户界面允许用户执行或多或少的相同操作(不要介意数据一致性,我已经解决了这个问题)。这些接口(interface)中的每一个都必须充当独立接口(interface)(就像同一系统的不同终端一样)。我希望他们所有人都从同一“核心”发送和接收消息,这将负责更新应用程序数据或做其他适当的事情。
实现内部“核心”和用户界面之间划分的最佳方法是什么?
当然,我缺少一些知识,但是到目前为止,我想出了两种选择:
1-从父亲“核心”派生一个 child ,并让 child 执行特定的UI程序(我没有这样做的实际经验,因此,在这种情况下,如何使父亲和 child 进行交流(请记住, child 是一个新过程)?)
2-为每个核心和UI创建不同的线程。
我需要进行此划分,因为要求应用程序尽可能稳定,并能够在发生崩溃的情况下重新启动UI。还请记住,整个应用程序将没有无限的内存和可用资源。
预先感谢您的帮助,问候。
最佳答案
在嵌入式系统中,采用单独的处理路径可能是一个不错的选择,原因有以下几个:
mmap()
大量系统内存的组件。任一个的过度分配都会以无法恢复的方式锁定您的系统。 建立这样的安排实际上比这里建议的要容易得多-Qt对dbus确实有很好的支持-很好地照顾了您的IPC,并且在Linux桌面中广泛用于系统管理功能。
至于您描述的场景,您可能想要守护应用程序的“核心”,然后允许UI组件通过dbus进行客户端连接。
关于c++ - 功能实现:进程还是线程划分?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13160464/