Size: a a a

2020 August 19

AH

Ayrat Hudaygulov in F# Chat
TES
а что не понятно?
для работы с внешним мировм(БД и сервисы) нужна имутабельность.
её в данной ситуации может обеспечить только MailboxProcessor(не уверен в этом)
Если это так, то сколько таких процессоров должно быть в приложении?
Да работы с внешним миром не нужна иммутабельность
источник

T

TES in F# Chat
да я не решаю задачу, я с языком разобратся пытаюсь)
источник

AH

Ayrat Hudaygulov in F# Chat
TES
да я не решаю задачу, я с языком разобратся пытаюсь)
Но в языке нет таких требований, которые ты постулируешь!
источник

AH

Ayrat Hudaygulov in F# Chat
Поэтому есть предложение что ты исходишь из неверных предпосылок и нам нужно узнать истинную проблему
источник

AH

Ayrat Hudaygulov in F# Chat
А не обсуждать заведомо неверную постановку задачи
источник

T

TES in F# Chat
Вот ты делаешь сайт на котором каждый из пользователей может изменить несколько  элементов массива одной командой. Все запросы пользователей идут паралельно.
Таким образом если 2 пользователя одновременно захотят изменить последовательности, которые как-то пересекаются - получится лажа.
Я так понял, что эту проблему нужно свести к акторам. Иначе очередь команд ты не сделаешь.
источник

T

TES in F# Chat
правильно?
источник

T

TES in F# Chat
или я куда-то не в ту сторону мыслю?
источник

SB

S B in F# Chat
Ayrat Hudaygulov
А не обсуждать заведомо неверную постановку задачи
Он наверно имеет в виду отсутсвие обшей памяти под всякими локами.
источник

VS

Vasily Shapenko in F# Chat
TES
Вот ты делаешь сайт на котором каждый из пользователей может изменить несколько  элементов массива одной командой. Все запросы пользователей идут паралельно.
Таким образом если 2 пользователя одновременно захотят изменить последовательности, которые как-то пересекаются - получится лажа.
Я так понял, что эту проблему нужно свести к акторам. Иначе очередь команд ты не сделаешь.
Ну для начала задача какая-то очень абстрактная
источник

T

TES in F# Chat
Vasily Shapenko
Ну для начала задача какая-то очень абстрактная
ну я ж не буду делать продакшн на незнакомом мне языке)
источник

VS

Vasily Shapenko in F# Chat
Начнем с того, какие ты знаешь виды блокировок?
источник

R

Roman in F# Chat
TES  если коротко, то мейлбокс процессоры не имеют абсолютно никакого отношения к хождению в бд. И иммутабельность в фшарпе тоже не является обязательной (хотя обычно она удобнее, чем мутабельность).
А учитывая, что сериализаторы уже умеют работать с иммутабельными типами, тебе вообще об этом париться не нужно
источник

AH

Ayrat Hudaygulov in F# Chat
TES
Вот ты делаешь сайт на котором каждый из пользователей может изменить несколько  элементов массива одной командой. Все запросы пользователей идут паралельно.
Таким образом если 2 пользователя одновременно захотят изменить последовательности, которые как-то пересекаются - получится лажа.
Я так понял, что эту проблему нужно свести к акторам. Иначе очередь команд ты не сделаешь.
Тут можно юзнуть очередь и мутабельный массив на другом конце

Мейлбокс с изменяемым массивом внутри

Массив с локом над ним
источник

VS

Vasily Shapenko in F# Chat
Так сказать, с азов
источник

AH

Ayrat Hudaygulov in F# Chat
Ayrat Hudaygulov
Тут можно юзнуть очередь и мутабельный массив на другом конце

Мейлбокс с изменяемым массивом внутри

Массив с локом над ним
Заметь, ни в одном из случаев я не использовал иммутабельность!
источник

T

TES in F# Chat
Vasily Shapenko
Начнем с того, какие ты знаешь виды блокировок?
локи, мьютексы, через Interlocked ещё можно...
источник

SB

S B in F# Chat
Акторы тут непричем. Если тебе нужен полный порядок, то тебе нужен полный порядок. Либо лок, либо optimistic concurrency с ретраями.
источник

SB

S B in F# Chat
Либо в один поток.
источник

VS

Vasily Shapenko in F# Chat
TES
локи, мьютексы, через Interlocked ещё можно...
Т.е. слова пессимистичный и оптимистичный тебе ничего не говорят
источник