Mam krótkie pytanie. Mam stworzyć mały program wielowątkowy do pobierania danych z wielu czujników i mam wiedzę zarówno o pthreadach, jak i qthreadach. Mam dostęp do obu bibliotek. osobiście jestem stronniczy w używaniu Qt ze względu na jego konstrukcję i różne funkcjonalności. Ale czy jest jakaś znacząca korzyść z używania jednego z drugim? DziękiQThreads Vs Pthreads
Odpowiedz
QThreads są zbudowane na pthreadach. Zapewniają abstrakcję obiektową, ułatwiającą pracę z wątkami. Poza tym, że QThreads są przenośne, mogą działać w dowolnym systemie, używając podstawowego systemu wątków, podczas gdy pthreads są specyficzne dla systemów POSIX.
Niemal tylko wadą używania QThreads jest to, że musisz połączyć swoją aplikację z Qt; ta zależność może sprawić, że nieco trudniej będzie rozpowszechnić twoją aplikację.
Myślę, że w samym sercu rzeczy, QThread
pod Linuksem używa pthread
. Nie jestem pewien, co kryje się pod maską Windows. O ile nie ma pewnych specyficznych funkcji API, które są ci niedostępne w QThread
, pozostanę przy QThread
tylko po to, aby skorzystać z możliwości przenoszenia, jakie ci to daje. Nie spodziewałbym się żadnej znaczącej różnicy w wydajności. Qthread
pozwoli ci również użyć mechanizmu sygnał/slot przez granice wątków.
Ale musisz wiedzieć, co QThreads używa pętli zdarzeń do zarządzania tym, więc nie możesz po prostu zabić wątku jak z pthread. Jeśli wątki wykonują długą i ciężką pracę, nie można go zatrzymać, dopóki nie zostanie zwolniony. W niektórych przypadkach jest to ważne.
- 1. Threading Box2D z pthreads
- 2. Równoważnik SetThreadPriority na Linuksie (pthreads)
- 3. C++/Qt - QThread vs QRunnable
- 4. c pthreads + valgrind = wyciek pamięci: dlaczego?
- 5. Jakie są ważne elementy biblioteki Boost Thread lub Pthreads?
- 6. Różne symbole z glibc/pthreads używane podczas używania linku złotego vs Ld
- 7. Jak używać rozszerzenia PHP Pthreads w Ubuntu
- 8. Jak używać pthreads z Androidem NDK?
- 9. Realistycznie, jakie funkcje pthreads są zazwyczaj używane?
- 10. Dlaczego makecontext nie działa z pthreads
- 11. gcc różnica między -pthread i -pthreads?
- 12. Przenośność pthreads-win32 przez różne kompilatory okien
- 13. pthreads: wątek, który wyzwala inne wątki
- 14. Klasa wątków PHP/pthreads nie może używać tablicy?
- 15. jak są pthreads na Linuksie postrzegane przez harmonogramu
- 16. Co jest lepsze w przypadku systemu Windows? pthreads lub CreateMutex?
- 17. Jak zainstalować rozszerzenie PHP pthreads w systemie Ubuntu?
- 18. pthreads: jak uruchomić kod działa w jednym kontekście gwintowanym
- 19. pthreads for PHP nie wykonuje równoległych wątków w Apache
- 20. Nić w tle podczas używania pthreads (nice, priority)
- 21. Bardzo prosta pula wątków za pomocą pthreads w C++
- 22. pthreads: programowo zbierać informacje o czasie spędzonym na różnych stanach?
- 23. Zdobywanie powinowactwa rdzeni w C++ 11 przez pthreads
- 24. metoda vs funkcja vs procedura vs klasa?
- 25. body.scrollTop vs documentElement.scrollTop vs window.pagYOffset vs window.scrollY
- 26. Opa vs Dart vs Haxe vs coffeescript
- 27. VS 2008 vs VS 2008 Express
- 28. Strona vs Extent vs. Segment vs. Tabele
- 29. Crystalspace vs. Irrlicht vs. .....?
- 30. NetSqlAzMan vs AzMan vs (?????)
Ya .. Po prostu patrzyłem na to i wygląda tak wewnętrznie, jak to się robi. Dzięki, Peoro. Naprawdę szukałem, jeśli tryLock() jest zaimplementowany przy użyciu pthread_mutex_trylock. Myślę, że tak jest. – blueskin
Jedyny problem z dystrybucją polega na tym, że musisz dołączyć licencję LGPL wraz z kodem, gdy dynamicznie łączysz się z bibliotekami qt (przy założeniu, że używasz wersji źródłowej open source, a nie komercyjnej). W systemie Windows, jeśli nie masz pewności, które pliki DLL będą potrzebne do rozpowszechniania, użyj polecenia "depend.exe", a ono powie dokładnie! http://www.dependencywalker.com/ – g19fanatic