2010-11-10 28 views
8

我有一個簡單的問題。我應該創建一個小型多線程程序來獲取來自多個傳感器的數據,並且我已經知道pthread和qthreads。我可以訪問這兩個庫。我個人偏向於使用Qt,因爲它的設計和各種功能。但是在使用一個和另一個時有什麼明顯的優勢? 謝謝QThreads vs Pthreads

回答

8

QThreads建立在pthread上。它們提供了面向對象的抽象,使得使用線程更容易。除了QThreads是可移植的,它們可以在任何使用底層線程系統的系統上運行,而pthread是POSIX系統的特定系統。

使用QThreads的幾乎唯一的缺點是您需要將您的應用程序與Qt鏈接;這種依賴性可能會使分發應用程序變得更加困難。

+0

亞..我只是看着它,它看起來像內部多數民衆贊成它是如何完成的。謝謝peoro。我實際上是專門查找tryLock()是否使用pthread_mutex_trylock實現的。我想那是怎麼回事。 – blueskin 2010-11-10 02:27:10

+2

唯一的分佈問題是,當你動態鏈接到qt庫時(這假設你使用的是開源源代碼而不是商業源代碼版本),你必須包括LGPL許可證和你的代碼。在windows上,如果你不確定你需要分發哪些DLLS,可以使用'depend.exe',它會告訴你! http://www.dependencywalker.com/ – g19fanatic 2010-11-10 04:46:41

2

我認爲在事情的核心,QThread linux下使用pthread。我不確定Windows的一面是什麼。除非您需要的pthread某些特定的pthread API函數不適用於QThread,否則我會堅持使用QThread,以便從它提供的可移植性中受益。我不希望有任何顯着的性能差異。 Qthread也將允許您跨線程邊界使用信號/插槽機制。

4

但是你必須知道QThreads使用事件循環來管理它,所以你不能像pthread一樣殺死線程。如果線程做了很長時間並且努力工作,那麼當線程不被釋放時就不可能阻止它。在某些情況下,這很重要。