ну ёмае, чо код за тебя писать? static let locker = obj() static let mutable isInit = false static let init() = if not isInit then lock locker ^fun _ -> if not isInit then … database initialize isInit <- true
ты спецом на фшарпе пишешь, издеваешься?)
да вроде смысл понятен!
Есть же LazyInitializer, который потокобезопасный и без локов
он очень хитро тредсейфовый. Там надо явно флаги прокидывать умные чтобы тело два раза не выполнялось
пособие как не надо делать апи
Немножко тредсейф Слегка тредсейф Очень тредсейф * определения немножко слегка и очень читать на этих 999 страницах
Мда, какая-то очень странная штука. Блокирует не перед инициализацией, а после - на перезапись. Не работает с асинхронщиной. А в f# вообще не работает, возможно считает что None это не null? Но при этом заходит в инициализацию, а результат инициализации не записывает в переменную https://pastebin.com/LTMt3BfG https://pastebin.com/zpak7znF
я тоже не понимаю зачем так странно делать
https://devblogs.microsoft.com/pfxteam/asynclazyt/ в пару строк расширяется до поддержки асинхронности же
None действительно не null
Вообще-то как раз обычно null. Что заставляет тебя считать иначе?
Обсуждают сегодня