Является ли это допустимым способом гарантировать инициализацию thread_local? [Дубликат]

promiseA(pram).then(
     result => { 
     //make sure promiseA function allready success and response
     //do something here
}).catch(err => console.log(err)) => {
     // handle error with try catch
}
15
задан sbabbi 17 June 2014 в 00:17
поделиться

1 ответ

Стандарт допускает такое поведение, хотя оно не гарантирует его. Из 3.7.2 / 2 [basic.stc.thread]:

Переменная с продолжительностью хранения потоков должна быть инициализирована до ее первого использования odr (3.2) и, если она построена, должна быть уничтожена на выходе потока.

Также возможно, что объекты создаются в какой-то другой момент (например, при запуске программы), так как «перед первым использованием» означает «в любой точке, если это раньше, чем «раньше».

17
ответ дан Jon 22 August 2018 в 23:09
поделиться
  • 1
    Спасибо, мои навыки CTRL+F довольно ограничены :) – sbabbi 17 June 2014 в 00:41
  • 2
    Это несколько вводит в заблуждение; в стандарте говорится, что переменная с длительностью хранения локального потока должна быть инициализирована когда-то раньше, чем она будет использоваться odr, но она не будет указывать точно , когда она будет инициализирована, и реализация даже разрешена инициализировать такую ​​переменную, даже если переменная никогда не используется odr. Как указано: он может быть инициализирован в последним , когда переменная используется odr, но такая инициализация может произойти в любое время до этого. – Filip Roséen - refp 17 June 2014 в 00:43
  • 3
    @ FilipRoséen-refp: Вчера я не совсем понял, что ответ так читается, если взять его буквально, но вы правы по обоим пунктам. Я отредактировал, чтобы было ясно, что «перед первым использованием» в математическом смысле. Спасибо за ваш отзыв! – Jon 17 June 2014 в 09:00
Другие вопросы по тегам:

Похожие вопросы: