thread
Только для систем Microsoft
Поток расширенный модификатор хранени-класса используется для того, чтобы объявить локальную переменную потока.
__declspec( thread ) declarator
Заметки
Локальное хранилище потока (TLS) - это механизм, с помощью которого каждый поток многопоточного процесса выбирает хранилища для данных поток-специфического.В стандартных многопоточных программах, данные разделены среди всех потоков данного процесса, тогда как локальное хранилище потока механизм для выбора данные для отдельного потока.Подробное обсуждение потоков см. в разделе многопоточность.
Объявления должны использовать локальные переменные потока расширенный синтаксис атрибутов и __declspec ключевое слово with Поток ключевое слово.В следующем примере кода показано, как объявлять целочисленную локальную переменную потока и инициализировать её некоторым значением:
__declspec( thread ) int tls_i = 1;
Необходимо учитывать следующие рекомендации при объявлении локальные объекты и переменные потока:
Можно применить Поток атрибут только к объявлениям и определения данных и классы, которые не имеют функции-члены; Поток нельзя использовать в объявлениях или определениях функций.
Использование Поток атрибут может повлиять на загрузка задержки библиотека DLL записей**.**
Можно указать Поток атрибут только на элементах данных с длительностью статического хранилища.Сюда относятся глобальные объекты данных (оба Статический и extern), локальные статические объекты и статические элементы данных классов.Нельзя объявить автоматические объекты данных Поток атрибут.
Необходимо использовать Поток атрибут для объявления и определения локального объекта потока, возникают ли объявление и определение в одном файле или в отдельных файлах.
Нельзя использовать Поток атрибут как модификатор типа.
Только классы могут создаваться с помощью СТРУЧКА __declspec (поток).Атрибут потока не учитывается, если отсутствует объект не объявлен как часть объявления класса.Примеры.
// declspec_thread.cpp // compile with: /LD __declspec(thread) class X { public: int I; } x; // x is a thread object X y; // y is not a thread object
Поскольку объявление объектов, использующих Поток допускается атрибут, эти 2 примера, семантически эквивалентен:
// declspec_thread_2.cpp // compile with: /LD __declspec( thread ) class B { public: int data; } BObject; // BObject declared thread local. class B2 { public: int data; }; __declspec( thread ) B2 BObject2; // BObject2 declared thread local.
Стандартное c# обеспечивает инициализацию объекта или переменной с выражением включая ссылку на себя, но только для объектов нестатического области памяти.Хотя C++ обычно обеспечивает ту динамическую инициализацию объекта с выражением включая ссылку на себя, этот тип инициализации не допускается с локальными объектами потока.Примеры.
// declspec_thread_3.cpp // compile with: /LD #define Thread __declspec( thread ) int j = j; // Okay in C++; C error Thread int tls_i = sizeof( tls_i ); // Okay in C and C++
Обратите внимание, что значение a sizeof выражение, включающее инициализируемого объекта объект не представляет собой ссылку на себя и разрешено в c# и C++.
ЭЛЕМЕНТ, относящийся Майкрософт