2011-07-18 43 views
2

我已經實現了一個C++類,它啓動了一個接受連接的單獨線程(使用boost::asio)。整個班級的目的是成爲一個更大程序的異步「命令接收器」。使用accept()(Linux)的Boost線程的性能/優先級

主要的問題是:當等待傳入連接時,線程基本空閒。我的看法是,這浪費了處理器時間(和硬件線程),什麼都不做。有沒有辦法以較低的優先級執行線程,或者其他方式使線程不會干擾主程序,這既是任務密集型又是線程化的?

回答

3

如果你或你所使用的類正在做一個accept調用,那麼線程被阻塞,正在等待操作系統做一些事情。所以線程(應該)不佔用任何CPU ressources,如果它這樣做,它要麼是

    系統調用(什麼你可以改變),或在
  • 有超時和線程再次循環到accept。如果 有任何改變這個的參數,試試吧!
+0

我認爲你是對的。我無法用ps得到任何證據,說明這些THA正在消耗任何資源。 謝謝! –

1

假設您正在使用boost線程類,您可以使用boost線程中的native_handle()句柄函數更改線程優先級。 Here是一個小例子。

但首先我建議你確認你確實有問題。無論如何,你關心的線程應該是有效的。

+0

與我的其他評論相同:D謝謝,您建議的代碼將用於其他目的。 +1;) –