Ich habe mich bei der Installation der MinGW-w64-Toolchain für das Win32-Threading-Modell entschieden, nachdem ich gelesen habe, dass es eine bessere Leistung als das POSIX-Pendant bietet. Ich bin nicht qualifiziert, diesen Anspruch selbst zu bewerten, aber hier ist eine Quelle dafür.
Zuerst dachte ich, diese Option würde sich nur auf das Innenleben der GCC-Laufzeit auswirken, ohne mich daran zu hindern, C++ 11-Threads in meinem Code zu verwenden, basierend auf dieser Antwort und diesem Kommentar eines anderen Benutzers rubenvb.
Dies scheint jedoch nicht der Fall zu sein. std::thread
Unterstützung scheint in dieser MinGW-w64-Installation nicht vorhanden zu sein.
Ich beschwöre g++ von der Befehlszeile ohne andere Optionen als -std=c++11
.
An dieser Stelle bin ich mir nicht sicher, ob:
- rubenvb war ein Fehler, und es ist tatsächlich notwendig, MinGW-w64 unter dem POSIX-Threading-Modell zu installieren, um meinen Code zu kompilieren, der von C++11 abhängt
thread
Bibliothek, oder; - Ich habe das alles völlig falsch verstanden, oder;
std::thread
wird in meinem Szenario tatsächlich unterstützt, es ist nur nicht intuitiv.
Ich betone den „out of the box“-Teil im Titel. Es existiert eine Bibliothek namens mingw-std-threads, wie in dieser Antwort dargestellt. Als Option eines Drittanbieters ist es jedoch für diese Frage nicht relevant.
Ab heute (Mai 2016) unterstützt MinGW-w64 also nativ std::thread
je nach Code, wenn mit dem internen Win32-Threading-Modell installiert?
Die Installation von mingw-std-threads, wie Sie sie verlinkt haben, funktioniert und dauert etwa 30 Sekunden
– MM
21. Mai 2016 um 4:33 Uhr
@MM … Danke für den Vorschlag, das habe ich schon gemacht. Diese Frage dient jedoch hauptsächlich der Neugier / Kanonizität. Informationen scheinen zwischen verschiedenen Quellen zu divergieren.
– März 2377
21. Mai 2016 um 4:39 Uhr
Weder meine Antwort noch mein Kommentar sind falsch. Sie wurden zu einer Zeit geschrieben, als die mingw-std-threads-Bibliothek nicht verfügbar war (oder zumindest war ich mir dessen nicht bewusst). GCC mit seinem auf win32 eingestellten internen Threading-Modell unterstützt keine C++11-Threading-Funktionalität, Punkt. Meine Antwort, die Sie verlinkt haben, sagt genau das. Mein Kommentar hingegen spricht nicht über die Unterstützung von C++ 11-Threads. Stattdessen befasst es sich mit dem Aufruf von pthreads oder win32-threadbezogenen Funktionen mit GCC, das mit win32/posix als internem Threading-Modell erstellt wurde, was alles so funktioniert, wie man es erwarten würde. Das sind zwei sehr unterschiedliche Themen.
– rubenvb
5. Juni 2016 um 0:15 Uhr
Hallo @rubenvb, danke für deinen Beitrag. Dann scheint Punkt 2 – “Ich habe das alles völlig falsch verstanden” – der Fall zu sein. Ich habe nicht richtig darauf geachtet, dass Sie sich auf den Begriff “API” beziehen.
– März 2377
13. Juli 2016 um 6:37 Uhr