我想創建一個線程池。我有一個名爲ServerThread.cpp類,它的構造應該做這樣的事情:可以在構造函數內創建Pthreads嗎?
ServerThread::ServerThread()
{
for(int i=0 ; i<init_thr_num ; i++)
{
//create a pool of threads
//suspend them, they will wake up when requests arrive for them to process
}
}
我在想,如果在構造函數中創建並行線程可能會導致任何不確定的行爲人應該避免陷入。
感謝
這已無關,與線程,斯科特的建議已經在很大程度上被更先進的技術所取代:例如擁有由基類或成員管理的資源,這些資源將在進入構造函數體之前完全構建。 (在這種情況下,線程池應該是一個成員,所以如果發生異常,它的析構函數將被調用。) –
@James Kanze:在我的回答中,我已經指出了以下內容:「這個論點並不嚴格與在構造函數中創建pthread池有關「,而是」良好實踐「。此外,您在評論和自己的回答中都確認,建議使用某些特定技術來正確處理此問題。一個'init'方法儘管年代久遠或簡單,但只是其中一種技術。無論如何,感謝您的評論。 – sergio