Könnte mir bitte jemand erklären, warum beide Threads in diesem Programm (wenn sie mit den mit Visual Studio 2012/2013 gelieferten Compilern kompiliert wurden) blockiert sind, bis beide Aufrufe von std::call_once
ausgeführt wurden? Ein weiterer Visual Studio-Fehler (vorausgesetzt, er verhält sich wie erwartet, wenn er mit GCC kompiliert wird)? Kann mir jemand einen Workaround einfallen lassen? Stell dir all den Schmerz vor, den ich durchgemacht habe, um das Problem zu verringern und bitte, sei barmherzig.
Um es auszuarbeiten, verhält es sich wie erwartet, wenn es mit GCC kompiliert wird:
Bei der Kompilierung mit den Compilern, die mit Visual Studio 2012/2013 ausgeliefert wurden, verhält es sich wie folgt:
Es ist eindeutig ein Fehlverhalten. Oder nicht?
UPDATE: Ich kann dies nicht als Visual Studio-Fehler einreichen, da mein Arbeitskonto aus irgendeinem Grund "nicht dazu berechtigt ist, Feedback für diese Verbindung zu senden", was auch immer das bedeutet. Ich habe eine Antwort vom Microsoft STL-Betreuer erhalten, der sagt, dass er das Problem hoffentlich irgendwann in der Zukunft untersuchen wird.
Ich habe eine Antwort vom STL-Betreuer bei Microsoft erhalten, die sagt, dass der Fehler in Visual Studio 2015 behoben wurde.