C++11 Динамическая инициализация и уничтожение с параллелизмом (магическая статика)
Изучаю С++ по документу:
https://ru.cppreference.com/w/cpp/compiler_support/11
В этой таблице (документ) есть пункт Динамическая инициализация и уничтожение с параллелизмом (магическая статика) по ссылкам:
https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2660.htm
в одной из ссылок идет описание thread_local - хотя описание thread_local дано в предыдущем пункте документа C++11 Локальная память потока.
У меня туговато пока с английским, можно простыми словами объяснить - о чем речь в изменении С++11 Динамическая инициализация и уничтожение с параллелизмом (магическая статика)?
Ответы (1 шт):
Обсуждение посвящено следующему вопросу, на примере кода:
...
if(c) {
static T s;
thread_local T t;
...
}
...
Будут ли вызваны конструкторы, и если будут, то когда.
До C++11 thread_local
вообще не было, а некоторые потенциально возможные реализации конструктора s
, на "чистом" C++98, конфликтовали со сложившейся практикой использования C++ в рамках POSIX или Windows многопоточных программ.
А в C++11 этот вопрос изложен по-новому и более строго.