当我fork()在Qt应用程序中时,Qt的哪些部分表现得很清醒?Qt支持这个吗?
显然,例如MacOSX上的GUI不起作用,因为Cocoa本身不支持分叉进程.
但是还有许多其他部分,例如线程列表等.
QCoreApplication::applicationPid()似乎返回错误的值.(根据这里.)
或者让问题有点不同:我必须fork()在我的应用程序中,并且某些部分可能会在子进程中访问Qt.尽管有所有Qt GUI的东西,我还需要在哪里特别小心?
TL;DR “我可以在 fork 中使用 Qt 中的什么?” “任何事情,只要你通过代码审计向自己证明,不存在与分叉相关的错误”。
所有这些都没有经过测试,因此没有人知道与分叉相关的任何内容是否曾经有效,是否被破坏,以及是否仍然有效。
Qt 拥有持续集成系统,并且在多个平台上进行了测试,作为将更改暂存到未来版本的先决条件。这包括测试关键领域的性能回归。IOW,这不是测试套件的玩笑,而是真实的。事实上,测试套件中没有解决分叉问题,这应该向您发出一个强烈的信号,表明您只能靠自己了。
因此,您需要处处小心,并且需要审核您调用的整个 Qt 代码。抱歉,这是唯一合理的答案。
| 归档时间: |
|
| 查看次数: |
2417 次 |
| 最近记录: |