Haben Sie keine Erfahrung mit Threading in der Vergangenheit, welche Threading-Technik in C++ ist für Anfänger am leichtesten? boost :: thread oder pthreads?PThread vs boost :: thread?
Antwort
Gehen Sie für boost :: thread. Es ist closely related zur Arbeit an der bevorstehenden C++ standard threads, und die Schnittstelle ist recht einfach zu bedienen und idiomatisch zu C++ (RAII anstelle der manuellen Ressourcenverwaltung).
boost :: thread ist eine sehr schöne und tragbare Abstraktion. Ich würde es sicherlich verwenden, aber auch den nativen Thread api lernen, wie Pthreads, damit Sie wissen, wie Threading auf Ihrer Plattform funktioniert.
Ich würde sagen, dass sie ziemlich nahe in Schwierigkeiten gleich sind. Der einzige große Unterschied, den ich sehe, ist, dass PThreads ziemlich weit verbreitet sind (wenn es um Cross-Plattform-Portierung geht). Ein anderes ist, dass es einige gute Bücher über PThreads gab, obwohl fast alle Konzepte auf boost :: thread und viele andere Threading-Bibliotheken übertragen werden.
Pthreads sind standardmäßig nur auf * nix-Plattformen verfügbar (es ist ein Pthreads-Wrapper verfügbar für Windows auf Sourceforge). Boost ist plattformübergreifend und wird sowohl auf * nix als auch auf Windows unterstützt. – jalf
Microsoft stellt Pthread-Header und Bibliotheken mit ihrem Services for Unix-Paket zur Verfügung. Für Win2K/XP/2003 ist es ein Download: http://www.microsoft.com/downloads/details.aspx?FamilyID=896C9688-601B-44F1-81A4-02878FF11778 Für Vista/7/2008 ist es eine Funktion: http://technet.microsoft.com/en-us/library/cc771672.aspx –
Boost.Thread verwendet das RAH Konzept zur Verriegelung, die mehr Dinge Ausnahme sicher macht und hilft, Fehler zu vermeiden, wie ein Mutex freizugeben, zu vergessen.
Ich werde in der entgegengesetzten Richtung von jedem gehe andere - lernen (oder zumindest machen Sie sich mit dem, was in verfügbar ist) pThreads.
Da boost ist in erster Linie nur ein Wrapper um pThreads (auf Posix-Plattformen) es hilft zu wissen, was darunter passiert. Beim Versuch, generisch zu sein, lässt boost die Plattform spezifische Funktionalität unverpackt. Um dorthin zu gelangen, müssen Sie die native_handle() -Aufrufe verwenden. Um die native_handle() - Aufrufe zu verwenden, müssen Sie wissen, was die Plattform bietet.
Betrachten Sie es wie Steckdosen. Es gibt Dutzende Socket-Klassen und Frameworks. Aber schließlich wickeln sie die Socket-API der zugrunde liegenden Plattform um. Dein Verständnis ist immer reicher, wenn du es weißt - und zu wissen, auf welche Weise deine Klassen-Abstraktionen ein kurzes Kommen haben könnten.
Welche bestimmte Funktionalität können Sie nicht über Boost zugreifen? – jalf
@jalf pthread Attribute - Prioritäten, etc. Sie können sie über die native_handle() -Aufrufe von Thread, Mutex usw. erreichen, aber wenn Sie nicht ein wenig über Pthreads wissen, werden Sie vielleicht nie wissen, dass sie da sind, um damit zu beginnen . – Duck
Messepunkt. Ich wünschte nur, du hättest sie in der Post selbst erwähnt. :) Ich würde auch sagen, dass die meisten Apps sich nicht um Thread-Priorität (oder Prozesspriorität, für diese Angelegenheit) kümmern sollten. Aber Sie haben Recht, wenn und wenn diese Details benötigt werden, ist die Vertrautheit mit der zugrunde liegenden API unerlässlich. – jalf
- 1. Boost Thread Cancelling
- 2. Thread Destruktoren in C++ 0x vs Boost
- 3. Mit welchen Low-Level-Windows-spezifischen Funktionen wird std :: thread/boost :: thread/pthread in Windows implementiert?
- 4. Kill Thread in Pthread Bibliothek
- 5. Pthread Zustandssignal mit Arbeiter Thread
- 6. Threads vs. pthread in Perl
- 7. Pthread einen Thread Zyklus basierend auf Benutzereingaben
- 8. Thread-Synchronisierung mit pthread bedingte Variable
- 9. VS rand() Problem mit pthread-win32
- 10. C++ Boost-Thread-Verzögerung
- 11. Absturz mit boost :: thread
- 12. decaf threads vs. boost threads vs omnithreads
- 13. ACE vs Boost vs POCO
- 14. Boost :: Asio, Thread-Pools und Thread-Überwachung
- 15. boost :: bind, boost :: asio, boost :: thread und classes
- 16. Pthread vs Intel TBB und ihre Beziehung zu OpenMP?
- 17. ACE vs Boost vs Poco vs wxWidgets
- 18. Boost: Thread stürzt ab Microsoft C++ Compiler
- 19. Boost Jam vs Jam
- 20. Boost :: uBLAS vs Eigen
- 21. Einem bestimmten Boost-Thread beitreten
- 22. Wie kompiliert Boost-Thread-Bibliothek
- 23. Undefinierter Verweis auf Boost Thread
- 24. Was macht boost :: thread sleep()?
- 25. Pthread Argumente
- 26. boost :: thread_specific_ptr/Bereinigung vs Atexit Ausführungsreihenfolge
- 27. Pthread gibt 251 zurück
- 28. Für pthread, wie Kind Thread aus dem Hauptthread zu töten
- 29. Pthread und Wartebedingungen
- 30. pthread in einer Klasse
Ich habe noch nicht benutzt, aber ich habe die Dokumentation für beide angeschaut. Boost ist kompatibler, aber Pthread ist viel einfacher zu verwenden. –
Hilfreiche: http://www.boost.org/doc/libs/1_54_0/doc/html/boost_asio/overview/networking/bsd_sockets.html –