2015-04-01 23 views
11

Chciałbym podsumować, jaki jest obecny stan obsługi słowa kluczowego "thread_local" w różnych kompilatorach i platformach.Jaki jest obecny stan obsługi "thread_local" na platformach?

Jestem szczególnie zainteresowany typowymi platformami komputerowymi i mobilnymi. Informacje, które udało mi się znaleźć, wydają się w najlepszym razie niecodzienne, ponieważ raporty o nich działają na niektórych platformach, a nie na innych, lub wspominają o wsparciu będącym WIP. Odpowiedzi, które potwierdzają wsparcie (lub brak wsparcia) nawet dla pojedynczych platform są mile widziane. Proszę wymienić wszelkie zastrzeżenia do wsparcia, jeśli takie istnieją.

  • Okna (gcc, dzyń, msvc)
  • Linux (gcc, dzyń)
  • OS X (gcc, dzyń)
  • Android (gcc, dzyń)
  • iOS
  • BlackBerry
  • Windows Phone/RT/etc

Odpowiedz

3

Dla clang, można sprawdzić C++11 implementation status:

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

i

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.

Można też użyć libc++, która jest "100% kompletna C++ 11 realizacja na Apple OS X."

+0

Obecnie Clang w Xcode 7 dla celów iOS nie obsługuje thread_local - https://devforums.apple.com/message/1079348#1079348, więc nie jestem pewien, dlaczego jest to zaznaczone jako poprawne. – Alexp

+1

'Apple LLVM wersja 7.3.0 (clang-703.0.31)' produkuje tę fatalną diagnostykę dla x86-64: 'error: thread-local storage nie jest obsługiwany dla bieżącego celu'. Ale 'Apple LLVM wersja 8.1.0 (clang-802.0.42)' wydaje się obsługiwać 'thread_local' w porządku, przynajmniej dla natywnego x86-64. Nie wiem o systemie iOS. – Quuxplusone

7

W uzupełnieniu do innej doskonałej odpowiedzi: MSVC 2013 obecnie nie obsługuje tego.

Ten numer page on support of core language features twierdzi, że jest częściowo obsługiwany. Jednak patrząc na szczegółach, wydaje się, że:

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.)

Jest realizowany w MSVC 2014 CTP 3 (od lata 2014; patrz blog entry) i jest dostępny w MSVS2015.

Powiązane problemy