2017-12-12 4 views
0

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

+0

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

Antwort

1

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.