我从2天开始就遇到了这个模糊不清的问题:我在debian系统上用C ++创建了一个启动启动应用程序,它在我集成一些多线程元素之前一直运行良好。
已经2天了,我就没有了! 如果有人以前经历过这个或者可以找到一些逻辑,我将永远感激。
答案 0 :(得分:1)
在我看来,你的新逻辑只是...... 一个错误。您在多线程逻辑的设计中出错,这样子线程只运行一次迭代。 (或者,更有可能的是,在无限等待中停止。等待从未发出信号的事件,永不提升的信号量,干涸且永不填充的队列,依此类推。)
如果您发布相关代码的摘录,我们可以为您提供进一步的帮助...仅说明如何启动子线程以及它与父线程的交互方式。 (条件变量,信号量等等,这可能是错误的关键所在。)
我会建议"所有其他的东西都无关紧要。"你不需要在启动序列中睡一觉#34; (如果序列等待程序完成,和,如果需要)。我建议在我看来,你的新代码中只有...... bug 引入了多线程。
并且您可能希望考虑多线程是否有利,因为您有一个正常工作的相同事物的非线程版本。如果要完成的处理过去(成功)由单个线程完成,则此类处理可能会或可能不会更有利地由" n 线程处理。" 你应该找到并修复这个错误,还是放弃改变并恢复到有效的状态?只有你可以决定......
答案 1 :(得分:0)
谢谢大家的建议。
我发现了一个“修复”:在终端中运行启动程序('lxterminal -e url / to / program& '在lxsession的自动启动中)而不是背景似乎修复它不知何故。虽然没有GUI ......它是一种服务。
多线程逻辑在这里没有错,不是我的第一枪,我真的想保留这个功能(@Mike Robinson)。
我也会重新考虑使用sudo,这看起来很粗略。它可能会让它在后台运行。谢谢@ datenwolf。