threadprivate
Указывает, что переменная является закрытой в поток.
#pragma omp threadprivate(var)
Заметки
Здесь:
- var
Список переменных с разделителями-запятыми, которые необходимо сделать закрытыми в поток. var быть либо переменной гловального или пространства имен-scoped или локальный статической переменной.
Заметки
threadprivate директива не поддерживает никаких предложений OpenMP.
Дополнительные сведения см. в разделе директива 2.7.1 threadprivate.
threadprivate директива основана на поток__declspec атрибут; ограничения on __declspec (поток) примените к threadprivate.
Нельзя использовать threadprivate в любом библиотека DLL, которая загружает посредством Функции LoadLibrary. Это включает библиотеку DLL с которыми загрузка /DELAYLOAD (загрузка импорта с задержкой), который также использует Функции LoadLibrary.
Можно использовать threadprivate в библиотеках DLL, статически загружается во время запуска процесса.
Поскольку threadprivate находит on **__declspec (поток)**a threadprivate переменная будет существовать в любом потоке запусщенном в процессе, а не только тех потоках, которые являются частью группы икренной потока параллельной области. Эти сведения реализации которого необходимо иметь в виду, поскольку можно заметить, например конструкторы, a threadprivate пользовательский тип, называемого чаще затем ожидается.
A threadprivate не гарантируется, что имеется переменная с именем destructable типа его деструктор. Примеры.
struct MyType
{
~MyType();
};
MyType threaded_var;
#pragma omp threadprivate(threaded_var)
int main()
{
#pragma omp parallel
{}
}
Пользователи не имеют ни один элемент управления о если потоки образовывая параллельной области. Если эти потоки, если процесс ", потоки не будут уведомление о выхода из процесса и деструктор не будет вызываться для threaded_var в любом потоке, который будет удалена одна (здесь основной поток). Поэтому код разрушение возлагать жизни на правильное threadprivate переменные.
Пример
Для образца использования threadprivateсм. private.