2016-08-04 91 views
0

我在这个不起眼的问题,因为两日游:我创建了C++ Debian系统,它直到我整合了一些多线程的元素完美地工作在启动,在启动应用程序。多线程应用程序 - C++/Debian的

  • 只有2个线程(1主和1名儿童)
  • 我包括-lpthread并在makefile
  • 我都尝试/.config/autostart和.desktop文件方法-pthread(同 结果)
  • 该计划lanched使用sudo
  • 没有错误/崩溃的任何地方,主线程工作确定,但 子线程运行1次迭代才停止出于某种原因
  • 甚至试图加入一些睡在lxsession启动顺序
  • 如果我启动了相同的命令行相比,在终端(须藤与否)的自动启动文件,它完美的作品。

它已经2天,我只是不知道! 如果有人以前经历过这个,或者可以找到它的一些逻辑,我会永远感激。

+0

你忘记检查任何错误代码吗?线程是停止还是退出? – James

+0

真的什么都没有从终端出来。它只是运行。有没有其他地方可以查看错误代码? – Binarynam

+0

@Binarynam当你的程序在启动时没有启动时,你的程序是否正确运行? – N0un

回答

0

谢谢大家的建议。

我发现了一个“修复”:(在lxsession的自动启动“@lxterminal -e URL /到/程序&”)在终端运行的启动程序而不是背景似乎以某种方式解决它。虽然没有GUI ......这是一项服务。

多线程逻辑在这里不是问题,不是我的第一枪,而且我真的想保留这个功能(@Mike Robinson)。

我会重新考虑sudo的使用,因为这似乎是粗略的所有事情考虑。它可能会让它在后台运行。感谢@ datenwolf。

0

在我看来,你只是有... 在新的逻辑错误。你在多线程逻辑的设计中犯了一个错误,例如子线程只运行一次迭代。 (或者,更有可能的是,在无限期等待等待一个永不发出信号的事件,一个永不会被提出的信号量,一个干运行并且从未被填满的队列,等等。)

如果您张贴有问题的代码片段,我们可以帮助您进一步...只说明如何子线程启动以及它如何与父级进行交互。 (条件变量,信号和问题等等,这可能是您的错误的症结所在。)

我会建议说,“所有其他的东西是不相关的。”您不需要“在启动序列中休眠”(如果序列等待您的程序完成,如果需要,可以使用)。我建议在我看来,你只是在你的引入多线程的新代码中有一个错误

你不妨考虑多线程是有利的,因为你有那正确的工作同样的事情,一个非线程版本。如果要完成的处理过去曾被单个线程完成(成功),则这种处理可能或可能不会更有利地通过线程来处理。“ 应该你发现并修复这个bug,还是放弃修改并恢复到原来的功能?只有你可以决定...