引导序列中的多线程应用程序 - C++/Debian

Multithreaded application at boot sequence - C++/Debian

我从 2 天起就遇到了这个晦涩难懂的问题:我在 debian 系统上用 C++ 创建了一个启动时启动应用程序,在我集成了一些多线程元素之前它工作得很好。

已经 2 天了,我还是一无所知! 如果有人以前经历过这种情况或能从中找到一些逻辑,我将不胜感激。

在我看来,您的新逻辑中只是...一个错误。您在 multi-threading 逻辑的设计中犯了一个错误,以至于 child 线程只运行一次迭代。 (或者,更可能的是,在 infinite-wait 中停止 。等待一个从未发出信号的事件,一个从未引发的信号量,一个干涸的队列填充,依此类推。)

如果您 post 摘录相关代码,我们可以为您提供进一步帮助...仅说明 如何 child 线程启动以及如何启动它与 parent 交互。 (Condition-variables、信号量和 so-forth,这可能是您错误的症结所在。)

我建议"all the other stuff is irrelevant."你不需要"a sleep in the boot-sequence"(如果序列等待你的程序完成,如果它需要).我建议在我看来,您只是在新代码中有一个 bug,它引入了 multi-threading.

并且您可能希望考虑 multi-threading 是否有优势,因为您拥有同一事物的 non-threaded 版本并且可以正常工作。如果要完成的处理曾经(成功地)由单个线程完成,则此类处理可能会或可能不会被 "n threads." 处理 应该 你 find-and-fix 这个错误,还是放弃更改并恢复到有效的?只有您可以决定...

谢谢大家的建议。

我找到了一个 "fix" : 运行 终端中的启动程序 ('@lxterminal -e url/to/program &' in autostart lxsession)而不是背景似乎以某种方式修复它。虽然没有 GUI ...这是一项服务。

多线程逻辑在这里没有问题,这不是我的第一次尝试,我真的很想保留这个功能 (@Mike Robinson)。

我也会按照建议重新考虑 sudo 的使用,考虑到所有事情,这似乎很粗略。它可能会在后台获取 运行。谢谢@datenwolf.