2016-08-04 90 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,還是放棄修改並恢復到原來的功能?只有你可以決定...