我有一個簡單的問題。我應該創建一個小型多線程程序來獲取來自多個傳感器的數據,並且我已經知道pthread和qthreads。我可以訪問這兩個庫。我個人偏向於使用Qt,因爲它的設計和各種功能。但是在使用一個和另一個時有什麼明顯的優勢? 謝謝QThreads vs Pthreads
8
A
回答
8
QThreads建立在pthread上。它們提供了面向對象的抽象,使得使用線程更容易。除了QThreads是可移植的,它們可以在任何使用底層線程系統的系統上運行,而pthread是POSIX系統的特定系統。
使用QThreads的幾乎唯一的缺點是您需要將您的應用程序與Qt鏈接;這種依賴性可能會使分發應用程序變得更加困難。
2
我認爲在事情的核心,QThread
linux下使用pthread
。我不確定Windows的一面是什麼。除非您需要的pthread
某些特定的pthread
API函數不適用於QThread
,否則我會堅持使用QThread
,以便從它提供的可移植性中受益。我不希望有任何顯着的性能差異。 Qthread
也將允許您跨線程邊界使用信號/插槽機制。
4
但是你必須知道QThreads使用事件循環來管理它,所以你不能像pthread一樣殺死線程。如果線程做了很長時間並且努力工作,那麼當線程不被釋放時就不可能阻止它。在某些情況下,這很重要。
相關問題
- 1. PThreads:內核vs線程
- 2. pthreads vs ucontext的性能特徵
- 3. 問題同步QThreads
- 4. 運行多個qthreads
- 5. 從多個QThreads更新QProgressBar
- 6. QThreads插槽和信號中斷
- 7. Qt - 系統級調用阻塞的QThreads
- 8. 在PyQt中同步活動QThreads
- 9. 如何使用QThreads寫入多個QTcpSockets?
- 10. FreeBSD上的pthreads
- 11. posix pthreads in c
- 12. pthreads鎖恢復
- 13. Pthreads和kthreads
- 14. pthreads的問題
- 15. Stage3D和pthreads
- 16. Pthreads和類
- 17. 創建Pthreads
- 18. 困惑pthreads
- 19. GDB與pthreads
- 20. 多線程(pthreads)
- 21. Pthreads數組
- 22. pthreads和C++
- 23. 使用gprof和pthreads
- 24. 從pthread運行pthreads
- 25. 無PThreads的同步
- 26. Peek stdin使用pthreads
- 27. PThreads地址空間
- 28. 通過pthreads的Cilk ++
- 29. 無法安裝pthreads
- 30. 叉後創建pthreads
亞..我只是看着它,它看起來像內部多數民衆贊成它是如何完成的。謝謝peoro。我實際上是專門查找tryLock()是否使用pthread_mutex_trylock實現的。我想那是怎麼回事。 – blueskin 2010-11-10 02:27:10
唯一的分佈問題是,當你動態鏈接到qt庫時(這假設你使用的是開源源代碼而不是商業源代碼版本),你必須包括LGPL許可證和你的代碼。在windows上,如果你不確定你需要分發哪些DLLS,可以使用'depend.exe',它會告訴你! http://www.dependencywalker.com/ – g19fanatic 2010-11-10 04:46:41