2015-04-01 8 views
11

Ich möchte eine Zusammenfassung der aktuellen Unterstützung für das Schlüsselwort 'thread_local' in verschiedenen Compilern und Plattformen erhalten.Wie ist der aktuelle Stand der Unterstützung für "thread_local" plattformübergreifend?

Ich bin speziell an gängigen Desktop-und mobilen Plattformen interessiert. Die Informationen, die ich finden konnte, erscheinen bestenfalls pikant mit Berichten darüber, dass sie auf einigen Plattformen funktionieren und nicht auf anderen oder erwähnen, dass Unterstützung ein WIP ist. Antworten, die die Unterstützung (oder mangelnde Unterstützung) sogar für einzelne Plattformen bestätigen, sind willkommen. Bitte geben Sie eventuelle Vorbehalte für den Support an, falls vorhanden.

  • Fenster (gcc, Klirren, msvc)
  • Linux (gcc, Klirren)
  • OS X (gcc, Klirren)
  • Android (gcc, Klirren)
  • iOS
  • Blackberry
  • Windows Phone/RT/etc

Antwort

3

Für clang, können Sie überprüfen die C++11 implementation status:

Language Feature: Thread-local storage
C++11 Proposal:N2659
Available in Clang? Clang 3.3

und

Clang 3.3 and later implement all of the ISO C++ 2011 standard . ... thread_local support currently requires the C++ runtime library from g++-4.8 or later.

Sie auch libc++ nutzen könnten, die "eine 100% abgeschlossen C++ 11 Implementierung auf Apples OS X" ist

+0

Momentan unterstützt Clang in Xcode 7 für iOS-Ziele nicht thread_local - https://devforums.apple.com/message/1079348#1079348, also bin ich nicht sicher, warum dies als richtig markiert ist. – Alexp

+1

'Apple LLVM Version 7.3.0 (clang-703.0.31)' erzeugt diese fatale Diagnose für x86-64: 'error: Thread-lokaler Speicher wird für das aktuelle Ziel nicht unterstützt'. Aber 'Apple LLVM Version 8.1.0 (clang-802.0.42)' scheint 'thread_local' in Ordnung zu halten, zumindest für native x86-64. Ich weiß nichts über iOS. – Quuxplusone

7

In Ergänzung zu den anderen ausgezeichneten Antwort: MSVC 2013 unterstützt es derzeit nicht.

Diese page on support of core language features behauptet, dass es teilweise unterstützt wird. Doch bei den Details der Suche scheint es, dass:

Thread-local storage is listed as "Partial" because VC has provided the non-Standard extension __declspec(thread) for many years. (Notably, C++11 thread_local supports non-PODs, but __declspec(thread) doesn't.)

Es in MSVC 2014 CTP 3 (seit Sommer 2014; siehe blog entry) implementiert ist und ist in MSVS2015 verfügbar.

Verwandte Themen