Почему C ++ добавил класс объектов, может ли он быть реализован библиотекой, как то, что GObject делает в C?Поскольку C ++ хочет, чтобы объекты class были известны в время компиляции , это более эффективно.Поэтому инициализация / деинициализация класса C ++ безопасна для исключений ( RAII ).
Некоторые функции являются более важными и требуют большей реализации. thread_local - это спецификатор класса хранения , поэтому он может быть известен в время компиляции , и компилятор может выполнить гораздо большую оптимизацию.
Также вhttp://www.open -std.org / jtc1 / sc22 / wg21 / docs /apers / 2008 / n2659.htm сказал:
Динамическая инициализация переменной потока
В настоящее время все реализации локального хранилища потоков не поддерживают динамическую инициализацию (и, по-видимому, нетривиальные деструкторы).На собрании в Монт-Треблане был достигнут общий консенсус в отношении поддержки динамической инициализации локальных функций, локальных переменных потока.Инициализация таких переменных уже защищена и синхронна, поэтому новая технология не требуется.С другой стороны, реализация для динамической инициализации переменных области имен пространства намного сложнее , и может потребовать дополнительной поддержки компоновщика и операционной системы .
Почему thread_local
были введены как новое ключевое слово языка?Кажется, что причиной может быть Динамическая инициализация переменной потока .