Wybrałem model Win32 threading podczas instalowania toolchaina MinGW-w64, po przeczytaniu, że zapewnia on lepszą wydajność niż odpowiednik POSIX. Nie kwalifikuję się do porównywania tego twierdzenia osobiście, ale do tego, here's a source for it.Czy MinGW-w64 obsługuje std :: thread out of the box przy korzystaniu z modelu Win32 threading?
Na początku myślałem, że ta opcja będzie miała wpływ tylko na wewnętrzne funkcjonowanie runtime GCC, natomiast nie pozwala mi z użyciem C++ 11 wątków w moim kodu, na podstawie this answer i this comment przez innych użytkowników rubenvb.
Jednak nie wydaje się, aby tak było. std::thread
Obsługa wydaje się nie istnieć w tej instalacji MinGW-w64.
Wywołuję g ++ z wiersza poleceń bez opcji innych niż -std=c++11
.
W tym momencie nie jestem pewien, czy:
- rubenvb było źle, i to jest rzeczywiście konieczne zainstalowanie MinGW-W64 pod gwintu modelu POSIX, aby skompilować mój kod, który zależy od Biblioteka C++ 11
thread
, lub; - Całkowicie źle to zrozumiałem, lub;
std::thread
jest rzeczywiście obsługiwany w moim scenariuszu, to po prostu nie jest intuicyjne.
Wzmacniam część "out of the box" w tytule. Istnieje biblioteka o nazwie mingw-std-threads, przedstawiona w this answer. Jednak jako opcja niezależna nie ma znaczenia dla tego pytania.
Czy na dzień dzisiejszy (maj 2016 r.) Program MinGW-w64 obsługuje tylko numer std::thread
po zainstalowaniu z wewnętrznym gwintowaniem Win32?
instalowanie mingw-std-threads w połączeniu z, działa i trwa około 30 sekund –
@ M.M ... Dzięki za sugestię, już to zrobiłem. Pytanie to dotyczy jednak głównie ciekawości/kanoniczności. Informacje wydają się różnić w zależności od różnych źródeł. –
Ani moja odpowiedź, ani mój komentarz nie są błędne. Zostały napisane w czasie, w którym biblioteka wątków-wątków nie była dostępna (a przynajmniej nie zdawałem sobie z tego sprawy). GCC z wewnętrznym modelem wątków ustawionym na win32 nie obsługuje funkcji wątków C++ 11, period. Moja odpowiedź, którą łączysz, mówi dokładnie to. Mój komentarz z drugiej strony nie mówi o obsłudze wątków C++ 11. Zamiast tego zajmuje się wywoływaniem funkcji Pthreads lub Win32 związanych z wątkami z GCC zbudowanym z Win32/Posix jako wewnętrznym modelem wątków, który działa tak, jak można by oczekiwać. To są dwa bardzo różne tematy. – rubenvb