Ленивое свойство инициализируется дважды - PullRequest
0 голосов
/ 21 ноября 2018

Как мы все знаем, свойство lazy не является поточно-ориентированным .

моя оценочная часть выглядит следующим образом.

if someclass isInitialized {
     return someclass instance
}
else{
    initialize someclass
    return someclass instance
}

Проблема

Если поток 1 увидит, что someclass не инициализирован, он попытается это сделать.

Если поток 2 увидит, что someclass не инициализирован до того, как поток 1 сможет это сделать, то он тоже попытается его инициализировать..

так что инициализируется дважды

Можем ли мы преодолеть это с ленивым свойством?

...