shared state, например, Map[Id, State]. В акке все просто, на каждый Id создается актор, который и менеджит стейт внутри себя. А как фпшники это делают? Хотелось бы иметь какой-то Map[Id, State], который бы поддерживал .update(longRunningFuncion), на которую он блокировал бы только конкретный стейт, а не всю мапу. Вижу, что в котах есть import cats.effect.concurrent.Ref и MVar в мониксе. Наверное, то что я хочу, это TrieMap[Id, Ref]?
А вставлять отсутствующий ключ из двух потоков не планируешь?
MVar \ Ref
ConcurrentHashMap из джавы, при записи он блокирует не всю мапу, а ее сегмент, куда ввходит записываемый ключ + еще несколько возможных ключей
Обсуждают сегодня