Я бы сказал, что да; во всяком случае, в чистом C. Статики инициализируются из сегмента данных один раз при загрузке образа, до начала исполнения программы. Никаких threads на этот момент не существует.
Насчет C++ подозреваю, что ответ тот же.
Re: Статический константный массив в многопоточном приложени
vnp>Насчет C++ подозреваю, что ответ тот же.
Нет. В С++ объект будет инициализирован при первом вхождении в функцию. В многопоточном приложении это первое вхождение может происходить одновременно.
Да здравствует мыло душистое и веревка пушистая.
Re[3]: Статический константный массив в многопоточном прилож
Vamp:
vnp>>Насчет C++ подозреваю, что ответ тот же. V>Нет. В С++ объект будет инициализирован при первом вхождении в функцию. В многопоточном приложении это первое вхождение может происходить одновременно.
Откуда такие сведения?
8.5.1/14:
When an aggregate with static storage duration is initialized with a brace-enclosed initializer-list, if all the member initializer expressions are constant expressions, and the aggregate is a POD type, the initialization shall be done during the static phase of initialization (3.6.2)
Re: Статический константный массив в многопоточном приложени
В Си — да, поскольку такая инициализация происходит до старта программы (реально, массив располагается в области памяти, проинициализированной линкером, а не в runtime).
Re[2]: Статический константный массив в многопоточном прилож
S>платформозависимо, под студией — небезопасно, а вот в gcc к примеру — безопасно.
А что такого небезопасного делает студия в этом месте? Неужели заводит флаг, проинициализирован ли массив, и инициализирует его во время исполнения? Зачем ей это делать так сложно?
Re[4]: Статический константный массив в многопоточном прилож
vnp>Я бы сказал, что да; во всяком случае, в чистом C. Статики инициализируются из сегмента данных один раз при загрузке образа, до начала исполнения программы. Никаких threads на этот момент не существует. vnp>Насчет C++ подозреваю, что ответ тот же.
В приведенным выше примере safe. А если