An Entity of Type: software, from Named Graph: http://dbpedia.org, within Data Space: dbpedia.org:8891

Thread-local storage (TLS) is a computer programming method that uses static or global memory local to a thread. While the use of global variables is generally discouraged in modern programming, legacy operating systems such as UNIX are designed for uniprocessor hardware and require some additional mechanism to retain the semantics of pre-reentrant APIs. An example of such situations is where functions use a global variable to set an error condition (for example the global variable <a href="/wiki/Errno" class="mw-redirect" title="Errno">errno</a> used by many functions of the C library). If errno were a global variable, a call of a system function on one thread may overwrite the value previously set by a call of a system function on a different thread, possibly before following code on tha

Property Value
dbo:abstract
  • Thread-local storage (TLS) ist Speicherplatz, der für jeden Thread eines mehrläufigen Prozesses Daten threadspezifisch speichern kann. Variablen mit dem Attribut TLS erhalten für jeden Thread automatisch eine eigene Instanz.Der Compiler erzeugt weiterhin automatisch Code, der Zugriffe auf genau die dem Thread zugeordnete Kopie des TLS erlaubt. TLS kann dazu dienen, Daten vor unbeabsichtigten Änderungen durch andere Threads zu schützen, oder Race Conditions zu verhindern. Unter Windows/IA-32 und Windows x86 bzw. x64 z. B. erfolgt der Zugriff über das Segment-Register FS (x86) bzw. GS (x64), das für jeden Thread auf den sogenannten Thread Environment Block verweist. Codebeispiel für gcc mithilfe des Attributs __thread: __thread int i;extern __thread struct state s;static __thread char *p; Unter Microsoft-C mithilfe des Attributs __declspec(thread): __declspec(thread) int i;extern __declspec(thread) struct state s;static __declspec(thread) char *p; Seit C++11 existiert für Deklarationen das Schlüsselwort thread_local als einheitliche Alternative zu diesen GCC- bzw. MSVC-Attributen. TLS ist für die Architekturen IA-32, x86-64, SPARC, SuperH, Alpha und S390 sowie unter ARM-Prozessoren verfügbar. (de)
  • Le Thread Local Storage (TLS), ou mémoire locale de thread, est un type de mémoire spécifique et locale à un thread. Ce mécanisme est parfois requis parce que tous les threads d'un même processus partagent le même espace d'adressage. Donc, les données situées dans une variable ou globale sont exactement au même emplacement mémoire pour tous les threads, et correspondent donc à la même entité. Les variables sur la pile sont toutefois locales au thread, parce que chaque thread possède sa propre pile, distincte de celle des autres threads. Cependant, il est parfois utile que deux threads puissent référencer la même variable « globale » tout en possédant chacun une copie distincte, donc à des adresses mémoire différentes. Ceci rend la variable « locale » au thread, tout en ayant une syntaxe d'utilisation identique à celle d'une variable globale. Un exemple trivial d'une telle variable est, par exemple, la variable <a href="/wiki/Biblioth%C3%A8que_standard_du_C#errno.h" title="Bibliothèque standard du C">errno</a> du langage C. S'il est possible de rendre au minimum un pointeur local aux threads, alors il est possible de créer pour chaque thread du système une zone mémoire de taille arbitraire contenant des données locales de thread.En effet, cette zone peut elle-même être un simple tableau de pointeurs, ce qui permet ensuite (par déréférencements successifs) d'obtenir un TLS de taille totalement arbitraire, quelle que soit la limite initiale de la zone. (fr)
  • Thread-local storage (TLS) is a computer programming method that uses static or global memory local to a thread. While the use of global variables is generally discouraged in modern programming, legacy operating systems such as UNIX are designed for uniprocessor hardware and require some additional mechanism to retain the semantics of pre-reentrant APIs. An example of such situations is where functions use a global variable to set an error condition (for example the global variable <a href="/wiki/Errno" class="mw-redirect" title="Errno">errno</a> used by many functions of the C library). If errno were a global variable, a call of a system function on one thread may overwrite the value previously set by a call of a system function on a different thread, possibly before following code on that different thread could check for the error condition. The solution is to have errno be a variable that looks like it is global, but in fact exists once per thread—i.e., it lives in thread-local storage. A second use case would be multiple threads accumulating information into a global variable. To avoid a race condition, every access to this global variable would have to be protected by a mutex. Alternatively, each thread might accumulate into a thread-local variable (that, by definition, cannot be read from or written to from other threads, implying that there can be no race conditions). Threads then only have to synchronise a final accumulation from their own thread-local variable into a single, truly global variable. Many systems impose restrictions on the size of the thread-local memory block, in fact often rather tight limits. On the other hand, if a system can provide at least a memory address (pointer) sized variable thread-local, then this allows the use of arbitrarily sized memory blocks in a thread-local manner, by allocating such a memory block dynamically and storing the memory address of that block in the thread-local variable. On RISC machines, the calling convention often reserves a thread pointer register for this use. (en)
  • スレッド局所記憶(英: thread local storage, TLS)は、静的もしくは大域的なメモリをスレッドごとに局所的に使用するためのコンピュータプログラミングの方法である。 プロセス内のスレッドはすべてアドレス空間を共有しており、同じプロセスのスレッドから参照する際、静的変数やグローバル変数は同じメモリ番地に配置される。 一方スタック上の変数はすべてのスレッドが自分のスタックを持つためスレッドに対して局所的であり、異なるメモリ番地に存在する。 同じ静的変数・グローバル変数を参照する二つのスレッドが(変数をスレッドに対して局所的にすることで)実際には異なるメモリ番地を参照できることが望ましい場合がある。たとえば典型的な例としてC言語のエラーコードを格納する変数 <a href="https://en.wikipedia.org/wiki/errno" class="extiw" title="en:errno">errno</a> がある。 少なくともメモリアドレスを格納できるサイズの変数をスレッドに対して局所的にすることが可能なら、メモリブロックを確保し、そのメモリアドレスをスレッドローカルな変数に格納すれば、原理的には任意のサイズのメモリブロックをスレッド局所にすることが可能である。 (ja)
  • Pamięć lokalna wątku (ang. Thread-local storage, TLS) – rozwiązanie używane w programowaniu komputerowym przypisującym pamięć statyczną lub globalną lokalnie do wątku. Takie rozwiązanie bywa niezbędne, ponieważ wszystkie wątki w procesie współdzielą tą samą przestrzeń adresową. Innymi słowy, odnosząc się do zmiennej statycznej lub globalnej, różne wątki tego samego procesu odwołują się do tego samego miejsca w pamięci.Zmienne na stosie są natomiast lokalne dla wątku, ponieważ każdy wątek posiada własny stos, rezydujący w innym miejscu pamięci. Czasami jest jednak pożądane, aby dwa wątki odnosząc się do tej samej zmiennej statycznej lub globalnej odwoływały się do różnych obszarów pamięci. To wymaga uczynienia zmiennej lokalną dla wątku. Klasycznym przykładem jest w języku C przechowująca kod błędu zmienna <a href="/wiki/Errno" title="Errno">errno</a>. Jeżeli znany jest co najmniej rozmiar wskaźników, jest zasadniczo możliwe stworzenie bloków pamięci lokalnej wątku o dowolnie określonym rozmiarze. Alokuje się wówczas odpowiednie bloki pamięci, a wskaźniki do nich przechowuje w przestrzeni lokalnej wątku. (pl)
  • Локальна Пам'ять Потоку (англ. Thread-local storage) — механізм, за допомогою якого в кожному окремому потоці виконання можуть використовуватися власні копії глобальних та статичних змінних. Це буває корисним у деяких випадках, бо всі потоки розділяють одну і ту ж пам'ять свого процесу. Іншими словами, дані, розміщені в статичних чи глобальних змінних, зазвичай завжди розміщені в одному місці, якщо до них звертаються потоки одного процесу. Однак змінні розташовані у стеку є унікальними для потоку, оскільки кожний потік має свій стек, розміщений в окремому блоці пам'яті. Іноді потрібно, щоб два потоки, що звертаються до якоїсь глобальної змінної, насправді звертались до різних місць в пам'яті, таким чином роблячи змінну локальною для потоку. Канонічним прикладом є змінна коду помилки errorno мови C. (uk)
  • 线程局部存储 (TLS) 是一种存储持续期(storage duration),对象的存储是在线程开始时分配,线程结束时回收,每个线程有该对象自己的实例。这种对象的链接性(linkage)可以是静态的也可是外部的。 TLS的一个例子是用全局变量<span class="ilh-all" data-orig-title="errno" data-lang-code="en" data-lang-name="英语" data-foreign-title="errno"><span class="ilh-page"><a href="/w/index.php?title=Errno&action=edit&redlink=1" class="new" title="Errno(页面不存在)">errno</a></span></span>表示错误号。这可能在多线程并发时产生同步错误。线程局部存储的<a href="/w/index.php?title=Errno&action=edit&redlink=1" class="new" title="Errno(页面不存在)">errno</a>是个解决办法。 (zh)
dbo:wikiPageExternalLink
dbo:wikiPageID
  • 1649638 (xsd:integer)
dbo:wikiPageLength
  • 17082 (xsd:nonNegativeInteger)
dbo:wikiPageRevisionID
  • 1117558971 (xsd:integer)
dbo:wikiPageWikiLink
dbp:wikiPageUsesTemplate
dcterms:subject
gold:hypernym
rdf:type
rdfs:comment
  • スレッド局所記憶(英: thread local storage, TLS)は、静的もしくは大域的なメモリをスレッドごとに局所的に使用するためのコンピュータプログラミングの方法である。 プロセス内のスレッドはすべてアドレス空間を共有しており、同じプロセスのスレッドから参照する際、静的変数やグローバル変数は同じメモリ番地に配置される。 一方スタック上の変数はすべてのスレッドが自分のスタックを持つためスレッドに対して局所的であり、異なるメモリ番地に存在する。 同じ静的変数・グローバル変数を参照する二つのスレッドが(変数をスレッドに対して局所的にすることで)実際には異なるメモリ番地を参照できることが望ましい場合がある。たとえば典型的な例としてC言語のエラーコードを格納する変数 <a href="https://en.wikipedia.org/wiki/errno" class="extiw" title="en:errno">errno</a> がある。 少なくともメモリアドレスを格納できるサイズの変数をスレッドに対して局所的にすることが可能なら、メモリブロックを確保し、そのメモリアドレスをスレッドローカルな変数に格納すれば、原理的には任意のサイズのメモリブロックをスレッド局所にすることが可能である。 (ja)
  • 线程局部存储 (TLS) 是一种存储持续期(storage duration),对象的存储是在线程开始时分配,线程结束时回收,每个线程有该对象自己的实例。这种对象的链接性(linkage)可以是静态的也可是外部的。 TLS的一个例子是用全局变量<span class="ilh-all" data-orig-title="errno" data-lang-code="en" data-lang-name="英语" data-foreign-title="errno"><span class="ilh-page"><a href="/w/index.php?title=Errno&action=edit&redlink=1" class="new" title="Errno(页面不存在)">errno</a></span></span>表示错误号。这可能在多线程并发时产生同步错误。线程局部存储的<a href="/w/index.php?title=Errno&action=edit&redlink=1" class="new" title="Errno(页面不存在)">errno</a>是个解决办法。 (zh)
  • Thread-local storage (TLS) ist Speicherplatz, der für jeden Thread eines mehrläufigen Prozesses Daten threadspezifisch speichern kann. Variablen mit dem Attribut TLS erhalten für jeden Thread automatisch eine eigene Instanz.Der Compiler erzeugt weiterhin automatisch Code, der Zugriffe auf genau die dem Thread zugeordnete Kopie des TLS erlaubt. TLS kann dazu dienen, Daten vor unbeabsichtigten Änderungen durch andere Threads zu schützen, oder Race Conditions zu verhindern. Codebeispiel für gcc mithilfe des Attributs __thread: __thread int i;extern __thread struct state s;static __thread char *p; (de)
  • Le Thread Local Storage (TLS), ou mémoire locale de thread, est un type de mémoire spécifique et locale à un thread. Ce mécanisme est parfois requis parce que tous les threads d'un même processus partagent le même espace d'adressage. Donc, les données situées dans une variable ou globale sont exactement au même emplacement mémoire pour tous les threads, et correspondent donc à la même entité. Les variables sur la pile sont toutefois locales au thread, parce que chaque thread possède sa propre pile, distincte de celle des autres threads. (fr)
  • Thread-local storage (TLS) is a computer programming method that uses static or global memory local to a thread. While the use of global variables is generally discouraged in modern programming, legacy operating systems such as UNIX are designed for uniprocessor hardware and require some additional mechanism to retain the semantics of pre-reentrant APIs. An example of such situations is where functions use a global variable to set an error condition (for example the global variable <a href="/wiki/Errno" class="mw-redirect" title="Errno">errno</a> used by many functions of the C library). If errno were a global variable, a call of a system function on one thread may overwrite the value previously set by a call of a system function on a different thread, possibly before following code on tha (en)
  • Pamięć lokalna wątku (ang. Thread-local storage, TLS) – rozwiązanie używane w programowaniu komputerowym przypisującym pamięć statyczną lub globalną lokalnie do wątku. Takie rozwiązanie bywa niezbędne, ponieważ wszystkie wątki w procesie współdzielą tą samą przestrzeń adresową. Innymi słowy, odnosząc się do zmiennej statycznej lub globalnej, różne wątki tego samego procesu odwołują się do tego samego miejsca w pamięci.Zmienne na stosie są natomiast lokalne dla wątku, ponieważ każdy wątek posiada własny stos, rezydujący w innym miejscu pamięci. (pl)
  • Локальна Пам'ять Потоку (англ. Thread-local storage) — механізм, за допомогою якого в кожному окремому потоці виконання можуть використовуватися власні копії глобальних та статичних змінних. Це буває корисним у деяких випадках, бо всі потоки розділяють одну і ту ж пам'ять свого процесу. Іншими словами, дані, розміщені в статичних чи глобальних змінних, зазвичай завжди розміщені в одному місці, якщо до них звертаються потоки одного процесу. Однак змінні розташовані у стеку є унікальними для потоку, оскільки кожний потік має свій стек, розміщений в окремому блоці пам'яті. (uk)
rdfs:label
  • Thread-local storage (de)
  • Thread Local Storage (fr)
  • スレッド局所記憶 (ja)
  • Pamięć lokalna wątku (pl)
  • Thread-local storage (en)
  • 线程局部存储 (zh)
  • Локальна пам'ять ниток (uk)
owl:sameAs
prov:wasDerivedFrom
foaf:isPrimaryTopicOf
is dbo:wikiPageDisambiguates of
is dbo:wikiPageRedirects of
is dbo:wikiPageWikiLink of
is foaf:primaryTopic of
Powered by OpenLink Virtuoso    This material is Open Knowledge     W3C Semantic Web Technology     This material is Open Knowledge    Valid XHTML + RDFa
This content was extracted from Wikipedia and is licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License