Описание тега thread-local-storage

Thread-local storage (TLS) is a computer programming method that uses static or global memory local to a thread
3 ответа

Потоковое локальное хранилище в режиме ядра?

Есть ли в Windows эквивалент потокового хранилища (TLS) для драйверов режима ядра (точнее, Win32)? Чего я пытаюсь добиться: В конечном счете, в рамках процедуры диспетчеризации моего драйвера он может вызывать многие другие функции (может быть глубо…
20 мар '12 в 23:38
1 ответ

Порядок инициализации локальных переменных потока

Цитата из N4713: Динамическая инициализация нелокальных переменных V и W со статической продолжительностью хранения упорядочена следующим образом: Если V и W имеют упорядоченную инициализацию и V определяется перед W в пределах одной единицы трансля…
4 ответа

Локальное хранилище потоков C++ clang-503.0.40 (Mac OSX)

После того как я объявил переменную таким образом: #include <thread> namespace thread_space { thread_local int s; } //etc. я попытался скомпилировать мой код, используя 'g++ -std= C++0x -pthread [sourcefile]'. Я получаю следующую ошибку: examp…
21 май '14 в 18:26
6 ответов

Почему локальное хранилище потоков так медленно?

Я работаю над пользовательским распределителем памяти стиля выпуска метки для языка программирования D, который работает путем выделения из локальных потоков. Кажется, что узкое место в локальном хранилище потока приводит к огромному (~50%) замедлен…
1 ответ

Реализация локального хранилища потоков в Linux

__thread Foo foo; Как на самом деле разрешается "foo"? Заменяет ли компилятор каждый экземпляр "foo" на вызов функции? "Foo" хранится где-то относительно дна стека, и компилятор сохраняет это как "эй, для каждого потока, имеет это пространство около…
17 мар '10 в 03:16
2 ответа

Локальная переменная потока в классе Singleton

В одноэлементном классе у меня есть частная статическая переменная ThreadLocal. Будет ли эта переменная использоваться совместно с пользователями, имеющими доступ к этому одноэлементному классу, или не будет использоваться совместно?
2 ответа

Личный список потока, но разделенный с методами

Мне нужно запустить несколько потоков, но каждый поток будет иметь свой список. Это означает, что списки не должны быть общими, но доступ к ним будет осуществляться разными способами. class foo() { //put the list definition here as a property? publi…
10 июн '15 в 21:42
1 ответ

Проблема с удалением данных thread_specific_ptr в конце потока

Я использую поток локального хранилища с boost. У меня есть глобальная переменная: boost::thread_specific_ptr<MyDataClass> p_timeline_ctx; и у меня есть следующий класс, который инкапсулирует объект boost::thread и содержит дополнительный объе…
08 апр '14 в 14:09
0 ответов

Windows: Кто вызывает TlsAlloc ДО загрузки моего приложения?

У меня есть приложение, которое использует большое количество (не спрашивайте!) Переменных локального хранилища потоков. Это работало без проблем в течение почти десятилетия... до недавнего сюрприза. У клиента есть ноутбук под управлением Windows7 (…
2 ответа

Почему `std::exit` не вызывает деструкторы, как ожидалось?

#include <cstdlib> #include <thread> #include <chrono> #include <iostream> using namespace std; using namespace std::literals; struct A { int n_ = 0; A(int n) : n_(n) { cout << "A:" << n_ << endl; } ~A() { c…
1 ответ

Инициализация локального указателя потока

Читая очень хороший пост в блоге Никласа Фрикхольма, на который я ссылаюсь ниже, я наткнулся на то, что не совсем могу обернуть голову. http://bitsquid.blogspot.nl/2012/01/sensible-error-handling-part-1.html Этот код смутил меня: __THREAD Array<c…
31 мар '13 в 12:58
1 ответ

Что является и не является автоматически локальным для потоков в Python Threading?

Мне трудно сосредоточиться на потоке Python, тем более что документация явно говорит вам о RTFS в некоторых моментах, вместо того, чтобы любезно включать соответствующую информацию. Я признаю, что не чувствую себя способным читать модуль потоков. Я …
1 ответ

OpenMP и идентификатор локального хранилища потоков с помощью icc

Это простой тестовый код: #include <stdlib.h> __thread int a = 0; int main() { #pragma omp parallel default(none) { a = 1; } return 0; } gcc компилирует это без проблем с -fopenmp, но icc (ICC) 12.0.2 20110112 с -openmp жалуется с test.c(7): о…
14 ноя '13 в 14:57
1 ответ

_Thread_local спецификатор класса хранения в C?

Я прочитал заметку в книге C Как программировать 7-й о каком-то новом стандартном классе хранения C, названном _Thread_local: Новый стандарт C добавляет спецификатор класса хранения _Thread_local, что выходит за рамки этой книги. Я искал это в Googl…
1 ответ

Поток данных TPL Локальные данные

Есть ли хороший способ передать локальные данные потока в ActionBlock, например, если вы укажете MaxDegreeOfParallelization в его DataFlowExecutionOptions равным> 1, то каждая задача, которая выполняет действие, будет иметь свои собственные локальны…
1 ответ

C++ Thread Local Синглтон прерывистый сбой

Я попытался реализовать очень простой класс Local Local Singleton в C++ - это шаблонный класс, от которого наследуются другие классы. Проблема в том, что он почти всегда работает, но время от времени (скажем, 1 прогон в 15), он будет завершаться с о…
04 мар '15 в 10:55
2 ответа

Как работает gcc `__thread`?

Как __thread в gcc реализовано? Это просто обертка pthread_getspecific а также pthread_setspecific? С моей программой, использующей API posix для TLS, я немного разочарован тем, что 30% времени выполнения моей программы тратится на pthread_getspecif…
27 авг '15 в 09:07
6 ответов

Почему локальное хранилище потока не реализовано с отображениями таблицы страниц?

Я надеялся использовать C++11 thread_local ключевое слово для логического флага для потока, к которому будет обращаться очень часто. Однако большинство компиляторов, по-видимому, реализовали локальное хранилище потока с таблицей, которая отображает …
0 ответов

Это правильный способ гарантировать инициализацию thread_local?

Рассмотрим приведенный ниже тестовый пример: #include <iostream> #include <thread> thread_local struct Bar { Bar() { std::cout << '*' << std::endl; } ~Bar() { std::cout << '~' << std::endl; } } bar; struct Foo { v…
07 фев '18 в 18:42
0 ответов

Всегда ли глобальные переменные инициализируются до каких-либо глобальных переменных thread_local?

struct A { A() : n(1) {} int n; }; struct B { B() : n(2) {} int n; }; thread_local A a; B b; int main() { return a.n; } a определяется раньше b, Мой вопрос: Гарантирует ли стандарт C++ B::B() называется раньшеA::A()называется?