我有180個SVM模型可以同時運行。 目前我在開始時將模型加載到數組中。 然後,當我需要運行模型時,我使用pthread創建180個線程,然後每個線程獲取指向每個模型的指針,並進行一些計算。使用多線程加載的多個模型
我的問題是,每次我想要做一些計算時創建180個線程可能會產生嚴重的開銷(並且有很多計算要做)。 所以我在想,在開始時將SVM模型加載到180個線程中,並且每次我想要做一些計算時都重用它們。
我的想法是否可行?將不同的模型加載到每個線程中並同時使用所有線程? 我想過線程池,但我不認爲這是一個典型的線程池用例。 我會很感激任何形式的建議。謝謝。
確定這是可行的 - 爲什麼不呢?在頂部使用一些合適的信號發送一次while循環應該沒問題。如果您可以避免不斷創建/終止/銷燬180個線程,那麼太棒了!不確定線程池問題 - 如果其中任何一個進行阻塞調用,則180個線程都可以正常工作,但如果CPU密集型,則可能需要嘗試任務/池解決方案。 –
感謝您的回覆!我的任務實際上是CPU密集型的,所以我對「threadpool.sourceforge.net」做了一些測試。 但是性能並沒有比使用pthread更好。 我想因爲boost :: thread是pthread的包裝,所以不會有任何「很大」的性能改進。 我打算現在測試OpenMP。如果這樣做不成功,我不妨堅持使用pthread。 – mp2893