Локальная память потока |
Автор: admin Просмотров: 1976 Комментарии:
Добавлен: 26 января 2017
Обновлено: 26.01.2017 - 19:45
Локальная память потока (англ. Thread-local storage) - механизм, с помощью которого в каждом отдельном потоке выполнения могут использоваться собственные копии глобальных и статических переменных.
Это бывает полезным в некоторых случаях, так как все потоки разделяют одну и ту же память своего процесса. Иными словами, данные, размещенные в статических или глобальных переменных, обычно всегда находятся в одном месте, если к ним обращаются потоки одного процесса. Однако переменные расположены в стеке являются уникальными для потока, поскольку каждый поток имеет свой стек, размещенный в отдельном блоке памяти.
Иногда нужно, чтобы два потока, обращающихся к какой-то глобальной переменной, на самом деле обращались к различным местам в памяти, таким образом делая переменную локальной для потока. Каноническим примером является переменная кода ошибки errorno языка C.
Варианты реализации
C/C++Ключевое слово __thread используется так:
__thread int number;
__thread определяет number как локальную переменную потока.
int определяет тип переменной number как целочисленный тип int .
GCC
GCC C / C ++ реализует __thread как показано ниже.
Переменная должна быть инициализирована константой на этапе компиляции:
__thread int number = 1;
но не
void f (int number) {
static __thread int number_copy = number;
или (C ++)
__thread int number = calculate_number ();
Библиотека pthread предусматривает прямые конструкции для сохранения локальных данных потока.
Python
На Python версий 2.4 или более поздних класс local из модуля threading может быть использован для создания локального хранилища потока.
import threading
mydata = threading . local ()
mydata . x = 1
https://uk.wikipedia.org/wiki/Локальна_пам%27ять_нитей
------------------------
ТРИО теплый пол отзыв
Заработок на сокращении ссылок
Earnings on reducing links
Код PHP на HTML сайты
Категория: Компьютерные советы
Комментарии |