6.62.2 ISO/IEC 14882:1998 Изменения для локального хранения потоков
Ниже приведены изменения в ISO/IEC 14882:1998 (также известном как C++98), которые документируют точные семантики расширения языка.
- [intro.execution]
Новый текст после абзаца 4
Поток — это поток управления внутри абстрактной машины. Реализуется ли возможность существования более одного потока, определяется реализацией.
Новый текст после абзаца 7
Не определено, какие дополнительные действия должны быть выполнены, чтобы гарантировать, когда и будут ли побочные эффекты видны другим потокам.
- [lex.key]
Добавить
__thread. - [basic.start.main]
Добавить после абзаца 5
Поток, который начинает выполнение в функции
mainназывается главным потоком. Как функции, начинающие потоки, отличные от главного потока, обозначаются или типизируются, определяется реализацией. Функция, так обозначенная, а также функцияmain, называется функцией запуска потока. Что происходит, если функция запуска потока возвращает значение, определяется реализацией. Что происходит с другими потоками, когда любой поток вызываетexit, определяется реализацией. - [basic.start.init]
Добавить после абзаца 4
Память для объекта со сроком жизни потока должна быть статически инициализирована до первой инструкции функции запуска потока. Объект со сроком жизни потока не должен требовать динамической инициализации.
- [basic.start.term]
Добавить после абзаца 3
Тип объекта со сроком жизни потока не должен иметь нетривиального деструктора, и он не должен быть массивом, элементы которого (прямо или косвенно) имеют нетривиальные деструкторы.
- [basic.stc]
Добавить «срок жизни потока» в список в абзаце 1.
Изменить абзац 2
Сроки жизни потока, статический и автоматический связаны с объектами, введенными объявлениями […].
Добавить
__threadв список спецификаторов в абзаце 3. - [basic.stc.thread]
Новый раздел перед [basic.stc.static]
Ключевое слово
__thread, примененное к нелокальному объекту, присваивает этому объекту срок жизни потока.Локальная переменная или член данных класса, объявленные как
staticи__thread, присваивают этой переменной или члену срок жизни потока. - [basic.stc.static]
Изменить абзац 1
Все объекты, у которых нет срока жизни потока, динамического срока жизни, или они локальные […]
- [dcl.stc]
Добавить
__threadв список в абзаце 1.Изменить абзац 1
За исключением
__thread, в данном decl-specifier-seq может появляться не более одного storage-class-specifier. Спецификатор__threadможет использоваться самостоятельно или сразу после спецификаторовexternилиstatic. […]Добавить после абзаца 5
Спецификатор
__threadможет быть применен только к именам объектов и к анонимным объединениям. - [class.mem]
Добавить после абзаца 6
Члены, не являющиеся
static, не должны быть__thread.
Предыдущий: Изменения C99 для локального хранения потоков, Вернуться к: Локальное хранение потоков [Содержание][Индекс]
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-5.5.0/gcc/C_002b_002b98-Thread-Local-Edits.html