Вопрос про сингалтон, шареный ресурс и много тредов

Все, что вы хотели знать о программизме, но боялись спросить.
Ответить
Аватара пользователя
папа Карло
Шарманщик
Сообщения: 8565
Зарегистрирован: 17 фев 2003, 15:04
Откуда: НН -> BC -> WA -> UT -> CA

Вопрос про сингалтон, шареный ресурс и много тредов

Сообщение папа Карло »

Есть сингалтон на C#. в нем есть шареный ресурс. Есть пара методов через которые этот шареный ресурс раздается на чтение (метод который может менять ресурс приватен). Высокая конкуренция на раздачу. Ресурс меняется скажем раз в полгода, а читателей которым нужен ресурс много в каждую секунду. Как правильно организовать изменение ресурса в синглетоне _без_даунтайма_ (пару читателей можно обломить или заблокировать пока ресурс апдейтится). чтобы изменить ресурс полностью надо около пары секунд.

Какие будут мысли? Заранее пасиб! :)
Аватара пользователя
Marmot
Графоман
Сообщения: 39339
Зарегистрирован: 17 фев 2003, 17:58
Откуда: Caulfeild
Контактная информация:

Re: Вопрос про сингалтон, шареный ресурс и много тредов

Сообщение Marmot »

папа Карло писал(а):Есть сингалтон на C#. в нем есть шареный ресурс. Есть пара методов через которые этот шареный ресурс раздается на чтение (метод который может менять ресурс приватен). Высокая конкуренция на раздачу. Ресурс меняется скажем раз в полгода, а читателей которым нужен ресурс много в каждую секунду. Как правильно организовать изменение ресурса в синглетоне _без_даунтайма_ (пару читателей можно обломить или заблокировать пока ресурс апдейтится). чтобы изменить ресурс полностью надо около пары секунд.

Какие будут мысли? Заранее пасиб! :)
Как ты знаешь я C# не копегаген, но в Java я бы сделал обычную ссылку ( не volatile) на ресурс и в момент апдейта, просто бы подменял ее, с последующим проходом через write barrier (лок, CAS etc) для проброса в основную память;
Если читатели ждали пол-года, то, скорее всего смогут подождать до очередного сброса кеша, что бы увудеть обновление.
Работать будет ахренительно быстро, а если надо чтобы читатели увидели апдате сразу тогда делай ссылку volatile, тогда правда будешь терять пару сотен циклов на каждом чтении...
Кстати, а " много в каждую секунду" это какой порядок, я тут распинаюсь про случай ~10^5..6/с
Аватара пользователя
папа Карло
Шарманщик
Сообщения: 8565
Зарегистрирован: 17 фев 2003, 15:04
Откуда: НН -> BC -> WA -> UT -> CA

Re: Вопрос про сингалтон, шареный ресурс и много тредов

Сообщение папа Карло »

подмена ссылки интересное дело. опфятьже объем данных всего пара сотен килобайт... читатели не видят этот шареный ресурс, они видят результаты на основе данных этого ресурса. т.е. они не видят что ресурс поменялся или нет. в этом весь фикус. я за консистенси тут воюю. если читатель будет читать старые данне которые поменялись, то он получит и увидит совсем не то, и опять же может решение не правильное принять, что еще хуже. :(дынные для пользователя всегда выглядят одинакво, вне зависимости поменялись данные или нет. для энд юзера подмена невидима. порядок чтения примерно что ты привел.
Аватара пользователя
Marmot
Графоман
Сообщения: 39339
Зарегистрирован: 17 фев 2003, 17:58
Откуда: Caulfeild
Контактная информация:

Re: Вопрос про сингалтон, шареный ресурс и много тредов

Сообщение Marmot »

папа Карло писал(а): я за консистенси тут воюю. если читатель будет читать старые данне которые поменялись, то он получит и увидит совсем не то, и опять же может решение не правильное принять, что еще хуже.
Тут весь вопрос в том, насколько часто читатели проходят черес read barrier, ежели часто(99% случаев), то зачем нужен еще один? а если нет, ну тогда volatile
Аватара пользователя
папа Карло
Шарманщик
Сообщения: 8565
Зарегистрирован: 17 фев 2003, 15:04
Откуда: НН -> BC -> WA -> UT -> CA

Re: Вопрос про сингалтон, шареный ресурс и много тредов

Сообщение папа Карло »

Marmot писал(а):
папа Карло писал(а): я за консистенси тут воюю. если читатель будет читать старые данне которые поменялись, то он получит и увидит совсем не то, и опять же может решение не правильное принять, что еще хуже.
Тут весь вопрос в том, насколько часто читатели проходят черес read barrier, ежели часто(99% случаев), то зачем нужен еще один? а если нет, ну тогда volatile
прям сейчас я загружаю структуру когда создаю сингалтон объект (пройсходит запись). дальше чтоние происходит без каких либо локов в нестатических методах.

выглядит так, что мне надо просто пометить переменную (статическая не value) как volatile. локать ее на write и читать просто так. мысли?
Аватара пользователя
Marmot
Графоман
Сообщения: 39339
Зарегистрирован: 17 фев 2003, 17:58
Откуда: Caulfeild
Контактная информация:

Re: Вопрос про сингалтон, шареный ресурс и много тредов

Сообщение Marmot »

папа Карло писал(а):
Marmot писал(а):
папа Карло писал(а): я за консистенси тут воюю. если читатель будет читать старые данне которые поменялись, то он получит и увидит совсем не то, и опять же может решение не правильное принять, что еще хуже.
Тут весь вопрос в том, насколько часто читатели проходят черес read barrier, ежели часто(99% случаев), то зачем нужен еще один? а если нет, ну тогда volatile
прям сейчас я загружаю структуру когда создаю сингалтон объект (пройсходит запись). дальше чтоние происходит без каких либо локов в нестатических методах.

выглядит так, что мне надо просто пометить переменную (статическая не value) как volatile. локать ее на write и читать просто так. мысли?
не надо ничего локать, ты вообще знаешь, что такое volatile :) ?
просто читаешь и пишешь...
Аватара пользователя
папа Карло
Шарманщик
Сообщения: 8565
Зарегистрирован: 17 фев 2003, 15:04
Откуда: НН -> BC -> WA -> UT -> CA

Re: Вопрос про сингалтон, шареный ресурс и много тредов

Сообщение папа Карло »

Marmot писал(а):
папа Карло писал(а):
Marmot писал(а):
папа Карло писал(а): я за консистенси тут воюю. если читатель будет читать старые данне которые поменялись, то он получит и увидит совсем не то, и опять же может решение не правильное принять, что еще хуже.
Тут весь вопрос в том, насколько часто читатели проходят черес read barrier, ежели часто(99% случаев), то зачем нужен еще один? а если нет, ну тогда volatile
прям сейчас я загружаю структуру когда создаю сингалтон объект (пройсходит запись). дальше чтоние происходит без каких либо локов в нестатических методах.

выглядит так, что мне надо просто пометить переменную (статическая не value) как volatile. локать ее на write и читать просто так. мысли?
не надо ничего локать, ты вообще знаешь, что такое volatile :) ?
просто читаешь и пишешь...
что такое волатил знаю. но ты вообще знаешь что я датабазник, а не сишарп девелопер? :)
Аватара пользователя
Marmot
Графоман
Сообщения: 39339
Зарегистрирован: 17 фев 2003, 17:58
Откуда: Caulfeild
Контактная информация:

Re: Вопрос про сингалтон, шареный ресурс и много тредов

Сообщение Marmot »

папа Карло писал(а): что такое волатил знаю. но ты вообще знаешь что я датабазник, а не сишарп девелопер? :)
IMHO, даже датабазникам полезно понимать как работают современные процессоры и компиляторы...
Аватара пользователя
папа Карло
Шарманщик
Сообщения: 8565
Зарегистрирован: 17 фев 2003, 15:04
Откуда: НН -> BC -> WA -> UT -> CA

Re: Вопрос про сингалтон, шареный ресурс и много тредов

Сообщение папа Карло »

Marmot писал(а):
папа Карло писал(а): что такое волатил знаю. но ты вообще знаешь что я датабазник, а не сишарп девелопер? :)
IMHO, даже датабазникам полезно понимать как работают современные процессоры и компиляторы...
возможно, но прям в данный момент этот совет мне не поможет ни под каким углом.
Аватара пользователя
Marmot
Графоман
Сообщения: 39339
Зарегистрирован: 17 фев 2003, 17:58
Откуда: Caulfeild
Контактная информация:

Re: Вопрос про сингалтон, шареный ресурс и много тредов

Сообщение Marmot »

папа Карло писал(а):
Marmot писал(а):
папа Карло писал(а): что такое волатил знаю. но ты вообще знаешь что я датабазник, а не сишарп девелопер? :)
IMHO, даже датабазникам полезно понимать как работают современные процессоры и компиляторы...
возможно, но прям в данный момент этот совет мне не поможет ни под каким углом.
Нужный тебе совет я уже давно дал :)
Аватара пользователя
папа Карло
Шарманщик
Сообщения: 8565
Зарегистрирован: 17 фев 2003, 15:04
Откуда: НН -> BC -> WA -> UT -> CA

Re: Вопрос про сингалтон, шареный ресурс и много тредов

Сообщение папа Карло »

Marmot писал(а):
папа Карло писал(а):
Marmot писал(а):
папа Карло писал(а): что такое волатил знаю. но ты вообще знаешь что я датабазник, а не сишарп девелопер? :)
IMHO, даже датабазникам полезно понимать как работают современные процессоры и компиляторы...
возможно, но прям в данный момент этот совет мне не поможет ни под каким углом.
Нужный тебе совет я уже давно дал :)
т.е. сейчас ты просто перешел к простому брюзжанию. :)
Аватара пользователя
Marmot
Графоман
Сообщения: 39339
Зарегистрирован: 17 фев 2003, 17:58
Откуда: Caulfeild
Контактная информация:

Re: Вопрос про сингалтон, шареный ресурс и много тредов

Сообщение Marmot »

папа Карло писал(а):
Marmot писал(а):
папа Карло писал(а):
Marmot писал(а):
папа Карло писал(а): что такое волатил знаю. но ты вообще знаешь что я датабазник, а не сишарп девелопер? :)
IMHO, даже датабазникам полезно понимать как работают современные процессоры и компиляторы...
возможно, но прям в данный момент этот совет мне не поможет ни под каким углом.
Нужный тебе совет я уже давно дал :)
т.е. сейчас ты просто перешел к простому брюзжанию. :)
Да!
Аватара пользователя
папа Карло
Шарманщик
Сообщения: 8565
Зарегистрирован: 17 фев 2003, 15:04
Откуда: НН -> BC -> WA -> UT -> CA

Re: Вопрос про сингалтон, шареный ресурс и много тредов

Сообщение папа Карло »

Marmot писал(а):
папа Карло писал(а):т.е. сейчас ты просто перешел к простому брюзжанию. :)
Да!
c'mon man! :) нервные клетки не востанавливаются. :) а вообще все правильно написал. делаем волатил, строим новый объект в паралельном треде и потом только ссылку подвеняем. мне проще, у меня только два случая которые могут привести к изменению данных, оба случая легко контролируются чтобы ничего плохого не оплучилось, но хотелось знать для более дженерал случая. :)
Ответить