2012-05-07 35 views
1

我正在編寫一個程序,其中只要主線程運行,我就有一個在後臺運行的守護進程線程。當主線程結束我要終止守護線程,所以我嘗試了兩種方法:使用cpp恢復pthread

    如果我使用pthread_kill我有內存泄漏,甚至當我初始化它可拆卸
  1. (有沒有必要不斷加入這個線程)
  2. 由於這不起作用,只要全局bool _daemonRun爲真,我就想到在循環中運行守護進程線程。在主線程終止前,我將_daemonRun設置爲false,然後在守護進程中,我在循環外部使用pthread_exit(NULL)。問題是 - 如何恢復線程?使用條件變量似乎是一團糟,因爲我不希望線程等待...

任何想法?謝謝

+0

當你只想殺死線程,當進程結束時,我沒有得到你的意思,恢復它 – PlasmaHH

+0

'當進程結束時,我想終止線程' - 是否有任何壓倒一切的理由明確地做到這一點?如果沒有,只需結束這個過程並讓操作系統清理乾淨。 –

回答

2

在我看來,在主線程存在之前,你確實在乎守護進程線程正確釋放其資源(例如,內存)。因此,將它創建爲分離的線程對我來說似乎是錯誤的,因爲這將表明您不在乎何時/如果該線程退出。

因此,我建議如下。創建守護線程作爲普通線程。然後,在主線程存在之前,將_daemonRun設置爲false。最後,加入()守護進程線程。