Ich entwickle eine Anwendung in C++ 11, die SDL als eine Bibliothek verwendet. Ich plane, Multithread-Unterstützung für meine App hinzuzufügen. Gibt es einen Unterschied, ob SDL_Thread oder std :: thread in meiner Anwendung verwendet werden soll?SDL und C++ 11 Threads
Antwort
Sofern Sie nicht einen Teil der SDL-API verwenden, der speziell den Thread-Handle-Typ von SDL benötigt, verwenden Sie besser C++ std::thread
. Die API ist idiomatischer (z. B. der Konstruktor, mit dem Sie Argumente an die Startfunktion weiterleiten können), und bindet diesen Code nicht an das, was SDL bereitstellt.
Der Grund, ich erwähne das Handle ist, wenn Sie tatsächlich eine SDL_Thread *
übergeben müssen, gibt es keine Möglichkeit, für den aktuellen Thread behandeln. Zugegeben, std::thread
bietet dies auch nicht, aber da die Schnittstelle reicher ist, macht es mehr Sinn zu verwenden.
Edit: Beide Schnittstellen scheinen stark von POSIX-Threads zu zeichnen, aber mit einer Ausnahme. std::thread
hat keine integrierte Abbruchfunktion. Normalerweise möchten Sie einen Thread sowieso nicht ohne eine Säuberung töten, aber es ist erwähnenswert.
- 1. C++ 11 Threads mit clang
- 2. Leistung von Threads in C++ 11
- 3. Verzögerter Start eines Threads in C++ 11
- 4. C++ 11 shared_ptr in multi-threads
- 5. Eine RW-Sperre für C++ 11 Threads
- 6. Verhindern, dass Threads in C++ stauen. 11
- 7. C++ 11 Threads mit geteilten Mutex und Klasseninstanz
- 8. SDL und C-Tastatur oder Touch-Event
- 9. Überlastung [] und C++ 11
- 10. C++ 11 Thema: Mehrere Threads auf eine Zustandsvariable warten
- 11. Wie verfolgen Sie die Beendigung des Threads in C++ 11
- 12. Variable Anzahl von asynchronen Threads mit C++ 11
- 13. Beenden eines Threads von einer Callback-Funktion in C++ 11
- 14. Python und C++ 11 für swig: wie aktivieren C++ 11
- 15. SDL/C++ OpenGL-Programm, wie stoppe ich SDL abfangen SIGINT
- 16. SDL/C++ Rendern mehrerer Texturen
- 17. Do C++ 11 Threads bieten eine Möglichkeit für losgelöste Threads nach dem Beenden des Hauptthreads fortzusetzen?
- 18. SDL/C++ Kamera andere Wege?
- 19. C++ 11 alternativ pthread_cond_timedwait
- 20. C++ - Threads und mehrere Warteschlangen
- 21. Boost read_json und C++ 11
- 22. C++ 11 Auto und size_type
- 23. SDL-Oberflächen und BMPs
- 24. Bibliothekskompatibilität zwischen C++ 11 und C++ 03
- 25. Mutex Verriegelungs um C++ 11
- 26. boost :: thread_group in C++ 11?
- 27. Wie verwende ich Qt und SDL zusammen?
- 28. Gemeinsame Variablen in C++ 11
- 29. Probleme mit einem Vektor von std :: threads in C++ 11 Bigramme von Buchstaben und Wörtern zählen
- 30. C++ - Datenfreigabe zwischen Threads C++
Je nach gewählter Implementierung kann SDL sowohl C++ - Threads als auch zielsystemspezifische Implementierungen wie Pthreads verwenden. Wenn Details für Ihr Problem so wichtig sind, sollten Sie sich unbedingt anschauen, was SDL und C++ tun. SDL bietet wahrscheinlich eine feinere Kontrolle über z.B. Thread-Stack-Größe (* if * verwendet keine C++ - Threads als Threads-Implementierung). – keltar